我很感興趣的是在bash腳本中使用動態生成的參數調用某些函數。在bash中使用空格傳遞參數
但是,如果某些參數有空格,它似乎不起作用。
讓我們有這樣的測試腳本:
#!/bin/bash
# file uu.sh
[[ -z $1 ]] || echo '$1' $1
[[ -z $2 ]] || echo '$2' $2
[[ -z $3 ]] || echo '$3' $3
[[ -z $4 ]] || echo '$4' $4
[[ -z $5 ]] || echo '$5' $5
[[ -z $6 ]] || echo '$6' $6
[[ -z $7 ]] || echo '$7' $7
[[ -z $8 ]] || echo '$8' $8
[[ -z $9 ]] || echo '$9' $9
[[ -z $0 ]] || echo '$0' $0
我的任何腳本:
#!/bin/bash
# file vv.sh
ARR=(-x)
ARR+=($1)
ARR+=("$1")
ARR+=("'$1'")
ARR+=("\"$1\"")
bash uu.sh ${ARR[*]}
echo
bash uu.sh "${ARR[*]}"
當調用bash vv.sh "a b"
我得到以下結果:
$2 -x
$2 a
$3 b
$4 a
$5 b
$6 'a
$7 b'
$8 "a
$9 b"
$0 uu.sh
$1 -x a b a b 'a b' "a b"
$0 uu.sh
我期待的方式將變量傳遞給uu.sh,例如結果如下:
$1 -x
$2 a b
$0 uu.sh
(我可以通過調用bash uu.sh -x a\ b
直接獲得,或bash uu.sh -x "a b"
,或bash uu.sh -x 'a b'
)
你想要''$ 1「'而不是'$ 1'。你也可以使用'「$ @」'作爲所有參數。 – jm666
問題不在'uu.sh'中(以及任何如何使用引號測試,而且我仍然看到相同的問題) –