bash 參數傳遞問題 - Linux

Table of Contents

大家好

想請教關於 bash script 參數傳遞問題

目前有兩隻 script

a.sh:
nfsroot="-kernel vmlinuz -append 'root=/dev/nfs nfsroot=$ip:/'"
disk="-drive file=$1"
$arg="$disk $nfsroot"
/root/b.sh $arg

b.sh:
echo "num of arg:$#"

當執行$ ./a.sh
num of arg:7

但預期應該是要 6
因為 nfsroot 後面的 'root=.. nfsroot=..' 被當成兩個參數來傳遞了
分別為 'root=/dev/nfs 和 nfsroot=$ip:/'

請問有辦法讓變數傳遞時不要拆成兩個嘛?

謝謝

--

All Comments

Thomas avatarThomas2010-11-13
/root/b.sh "$arg"
Mason avatarMason2010-11-13
因為有些參數要在a.sh自動產生, 所以還需有a.sh
Xanthe avatarXanthe2010-11-14
直接./b.sh "$args" 會把所有參數視為一個會出錯
Damian avatarDamian2010-11-15
我耍笨了 你可以把變數用array傳
Blanche avatarBlanche2010-11-18
nfsroot=(-kernel .... 'root=/dev/nfs nfsroot=$ip:/')
Adele avatarAdele2010-11-23
接下來用 "${nfsroot[@]}" 叫出來時就會和原本的一樣了
Olive avatarOlive2010-11-27
t=( a b c ); cnt () { echo $#; }; cnt "${t[@]}"
ans = 3
t=( a 'b c' ); cnt () { echo $#; }; cnt "${t[@]}"
ans = 2