Bash
執行儲存在變數中的命令以回顯到文件中
如何讓儲存的命令適用於以下場景:
CMD='echo "test" >> test.txt' $CMD
它適用於其他場景,例如:
CMD='mkdir test' $CMD
正確的規則必須是:
- 將數據儲存在變數中,將程式碼儲存在函式中。
因此,使該命令正常工作的正確方法是:創建一個函式:
first_command (){ echo "test" >> test.txt; }
呼叫函式:
first_command
就是這樣。
將命令儲存為字元串是錯誤的。
更糟糕的是使用 eval 來執行這樣的命令。
它似乎適用於簡單的命令,但隱藏的問題是 eval 步驟刪除了命令的引用。
如果儲存此命令
CMD='echo "test" >> test.txt'
(是的
eval "$CMD"
,甚至引用)將執行此命令:echo test >> test.txt
沒有引號!!!!
很容易忘記報價需要使用 eval 進行特殊管理**。**無論如何,使報價正常工作總是很棘手。
嘗試在沒有 eval 步驟的情況下執行儲存在沒有重定向的變數中的命令(需要使用 eval 的主要問題)仍然很棘手,並且並非在所有情況下都有效。
請在此處閱讀對問題的精彩介紹: