裏面bash腳本的功能,我需要的腳本的命令行參數來工作,還與另一個參數列表。所以我試圖將兩個參數列表傳遞給一個函數,問題是多字參數被分割。通多字的參數bash函數
function params()
{
for PARAM in $1; do
echo "$PARAM"
done
echo .
for ITEM in $2; do
echo "$ITEM"
done
}
PARAMS="[email protected]"
ITEMS="x y 'z t'"
params "$PARAMS" "$ITEMS"
調用腳本給我
myscript.sh a b 'c d'
a
b
c
d
.
x
y
'z
t'
既然有兩份名單,他們必須作爲一個整體的功能被傳遞,問題是,如何遍歷的元素,同時尊重多字的項目用單引號'cd'和'z t'括起來?
,我有(見下文)的解決方法是利用BASH_ARGV的,所以我只是需要一個列表傳遞給函數。不過,我想更好地瞭解正在發生的事情以及完成上述工作所需的內容。
function params()
{
for PARAM in "${BASH_ARGV[@]}"; do
echo "$PARAM"
done
echo .
for ITEM in "[email protected]"; do
echo "$ITEM"
done
}
params x y 'z t'
調用腳本給我
myscript.sh a b 'c d'
c d
b
a
.
x
y
z t
...這是我需要它(除了第一個列表是相反的,但是這將是容忍我猜)
我明白了......所以你將項目單獨傳遞給函數。在我看來,只有在解釋命令行時,bash將字符串拆分爲多個項目時纔會考慮引號。 – haelix 2012-04-08 15:51:01
將數組元素作爲''{{items [@]}「'(在雙引號中)傳遞的性質具有將每個元素作爲'」$ {items [0]}「」$ {items [1] }「」$ {items [2]} ...'等等......如果您將它作爲'$ {items [@]}傳遞',您將得到包含空格的元素的分詞。 – 2012-04-08 17:18:03