我寫了一個bash腳本,它通過名稱接受參數並在鍵值對中讀取其值。以下是我如何運行腳本的示例。爲bash腳本解析輸入參數時帶空格的參數
sh test.sh param1='a' param2='b'
然後我在腳本內引用輸入參數,如$ param1和$ param2。以下是我爲此撰寫的腳本。
for item in [email protected]; do
case $item in
(*=*) eval $item;;
esac
done
但是,當參數的值有空格時,它只佔用空格之前的部分。
param3='select * from'
只會將「select」分配給param3而不是整個字符串。我怎樣才能做到這一點?任何幫助將非常感激。
編輯:
Inian的回答後
for item in [email protected]; do
case "$item" in
(*=*) eval "$item";;
esac
done
你有沒有考慮過將它們作爲變量傳遞給它,而不是'param1 ='a'param2 ='b'sh test.sh'?這將使'echo'$ param1「'立即可用而不解析 –
使用$ @或$ *而不用雙引號括起來不是一個好主意。如果你的字符串中有特殊字符,比如空白字符和通配符,它會變得不合時宜。 – codeforester