1
我正在創建一個shell腳本,用於從數據庫檢索值並將其後臺處理爲文本文件。這些值將在數據庫中具有變量($ CURR_DATE $ SITE等)。所以當我想用這些變量執行程序時,我遇到了一個問題,它使用的是字符串而不是變量的值。例如從文本文件構建執行字符串
。
while read line;
do
Unix_Array[$counter]=$line;
let counter=counter+1;
done < parameterfile.txt
echo "Finished putting into array"
while [[ $c -lt ${#Unix_Array[@]} ]]
do
PARAMS="${PARAMS:-}${PARAMS:+ }${Unix_Array[$c]}"
((c=$c+1))
done
echo "Finished creating parameter string"
EXECUTE="$PROGRAM $USERID $PARAMS"
echo $PARAMS
$EXECUTE
我認爲這是執行像
Program user/[email protected] $CURR_DATE $SITE
,而不是被宣佈並且已經設置實際變量。
我該如何構建執行語句,以便它使用聲明的變量而不是文字變量。
參數文件類似於param1 $ param2 param3 $ param4 1 US因此它的數據庫中的1列每個參數都由新行分隔,因此它看起來只有1列參數。 – Alkey29
我在$ EXECUTE之前添加了eval,並且它正確執行。使用eval的問題是什麼? – Alkey29
@ Alkey29如果你輸入了你無法控制的輸入(例如用戶有權寫入的文件中的數據「」「或來自命令行的參數),那麼''eval''是不安全的,你不想要執行任意代碼並且在大多數情況下可以避免。 –