
У меня есть файл с названием test
и его содержимое:
ubuntu@regina:~$ cat test
** test **
Запись этого файла через командную строку работает нормально, но если я использую подстановку команд, то получаю понятный, но нежелательный результат.
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
Из-за звездочек, которые присутствуют в файле, test
он по сути выполняет команду echo *
и выводит список содержимого каталога вместе с содержимым файла.
Есть ли параметр, который я могу передать в синтаксис подстановки команд, который не даст такого результата, или есть другая идиома, которую следует использовать для этого?
решение1
Вы хотите сделать echo "$A"
. Заключение переменной в кавычки делает ее строкой.
Пример:
[root@talara test]# A=$(<test)
[root@talara test]# echo $A
FILE1 ham test test FILE1 ham test
[root@talara test]# echo "$A"
** test **