Command substitution: cat with executable content
5,981
You want to do echo "$A"
. Wrapping the variable in the quotes makes it a string.
Example:
[root@talara test]# A=$(<test)
[root@talara test]# echo $A
FILE1 ham test test FILE1 ham test
[root@talara test]# echo "$A"
** test **
Related videos on Youtube
Author by
glenbot
Updated on September 18, 2022Comments
-
glenbot over 1 year
I have a file called
test
and the contents are:ubuntu@regina:~$ cat test ** test **
catting this file via command line works fine, but if I use command substitution I get an understandable but undesirable result.
ubuntu@regina:~$ A=$(cat test) ubuntu@regina:~$ echo $A deployment detect.sh htpasswd.py logs test uwsgi-1.0.4 uwsgi-1.0.4.tar.gz test deployment detect.sh htpasswd.py logs test uwsgi-1.0.4 uwsgi-1.0.4.tar.gz
Because of the asterisks that exist in the file
test
it basically executes anecho *
and lists the directory contents along with the file contents.Is there a parameter I can pass to the command substitution syntax that will not provide this result, or is there another idiom that should be used for this?
-
Tim almost 12 yearsNote: using cat to read a single file is less efficient then reading the file, example:
A=$(cat test)
VS.A=$(<test)
-
glenbot almost 12 yearsThank you, I didn't know that about that idiom
-
-
glenbot almost 12 yearsThanks tim! That's exactly what I was looking for. Funny, I knew about quotes and now that I see the answer I feel pwned.
-
Tim almost 12 yearsno prob. Shell quotes are like that, I forget often as well!