sco*_*fax 5 bash function parameter-passing
我想知道是否可以将 bash 函数中的位置参数分配给单行中的多个变量。
以下方法有效,但需要多个赋值行:
foo () {
var1=${1}
var2=${2}
var3=${3}
echo "var1=$var1 var2=$var2 var3=$var3"
}
foo 11 "22 22" 33 # Correct result: var1=11 var2=22 22 var3=33
Run Code Online (Sandbox Code Playgroud)
以下代码在一行中分配输入参数,但它无法正确处理第二个参数:
bar () {
read var1 var2 var3 <<<"$@"
echo "var1=$var1 var2=$var2 var3=$var3"
}
bar 11 "22 22" 33 # Incorrect result: var1=11 var2=22 var3=22 33
Run Code Online (Sandbox Code Playgroud)
您需要转义空格字符:
bar 11 "22\ 22" 33
Run Code Online (Sandbox Code Playgroud)
给出:
var1=11 var2=22 22 var3=33
Run Code Online (Sandbox Code Playgroud)