Bash

執行儲存在變數中的命令以回顯到文件中

  • December 8, 2015

如何讓儲存的命令適用於以下場景:

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 的主要問題)仍然很棘手,並且並非在所有情況下都有效。

請在此處閱讀對問題的精彩介紹:

我正在嘗試將命令放入變數中,但複雜的情況總是失敗!

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