Shell-Script

如何將變數發送到內聯 shell 腳本?

  • March 7, 2021

我執行以下腳本:

VAR="Test"
sh -c 'echo "Hello $VAR"'

但我得到:

# ./test.sh
Hello

如何將VAR腳本的變數發送到使用創建的 shell sh -c '...'

要麼使用export將其轉換為環境變數,要麼直接將其傳遞給命令。

VAR="Test" sh -c 'echo "Hello $VAR"'

VAR="Test"
export VAR
sh -c 'echo "Hello $VAR"'

避免在 shell 程式碼周圍使用雙引號以允許插值,因為這會引入命令注入漏洞,例如:

sh -c " echo '你好 $VAR' "

$VAR如果呼叫時包含類似的內容,則會導致重新啟動';reboot #

sh -c這是將變數傳遞給(作為位置參數)的另一種方法:

{
VAR="world"
VAR2='!'
sh -c 'echo "Hello ${0}${1}"' "$VAR" "$VAR2"
}

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