Bash
命令替換:帶有可執行內容的 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 *
並列出目錄內容以及文件內容。是否有一個參數我可以傳遞給不會提供此結果的命令替換語法,或者是否有另一個應該用於此的成語?
你想做的
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 **