Подстановка команды: cat с исполняемым содержимым

Подстановка команды: cat с исполняемым содержимым

У меня есть файл с названием 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 **

Связанный контент