命令替换:带有可执行内容的 cat

gle*_*bot 4 shell bash cat command-substitution

我有一个名为的文件test,内容是:

ubuntu@regina:~$ cat test
** test **
Run Code Online (Sandbox Code Playgroud)

通过命令行 catting 这个文件工作正常,但如果我使用命令替换,我会得到一个可以理解但不受欢迎的结果。

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
Run Code Online (Sandbox Code Playgroud)

由于文件中存在星号,test它基本上执行 anecho *并将目录内容与文件内容一起列出。

是否有我可以传递给命令替换语法的参数不会提供此结果,或者是否有其他习惯用法可以用于此目的?

Tim*_*Tim 6

你想做什么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 **
Run Code Online (Sandbox Code Playgroud)