Bash

命令替換:帶有可執行內容的 cat

  • June 7, 2012

我有一個名為的文件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 *並列出目錄內容以及文件內容。

是否有一個參數我可以傳遞給不會提供此結果的命令替換語法,或者是否有另一個應該用於此的成語?

你想做的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 **

引用自:https://unix.stackexchange.com/questions/40251