如果google无法正常工作,我通常会来这里。所以这一次是这样的: 在函数中,我想从第4个输入参数向前分配变量。 例如:
function foo {
var="$4$5$6..."
use var
commands using $1, etc
}
所以我认为我不能使用shift,因为我之后想要使用1美元。我不想使用额外的var来存储$ 1,$ 2,$ 3和shift。那应该怎么做呢?
答案 0 :(得分:8)
function foo {
var=${@:4}
# ...
}
答案 1 :(得分:1)
有人想要一个没有基础的版本吗?好的,但你不会喜欢它。
#!/bin/sh
do_something () {
i=4
var=
while [ $i -lt 10 ] ; do
tmp=
eval tmp=\"'$'$i\"
if [ -z "$tmp" ] ; then
break
else
var="$var$tmp"
fi
i=$(($i+1))
done
echo $var
}
do_something one two three four five six "six and a half" seven eight nine
我用破折号和FreeBSD的sh测试了这个,但我不能真正保证评估事物的可移植性。我还必须将它限制在参数$ 1到$ 9之间,因为之后它就会停止工作。
答案 2 :(得分:0)
此外,Alex回答:
所有参数,但最后一个:
var=${@:1:${#}-1}
最后一个论点:
var=${@:${#}}
or POSIX:
eval var=\${{#}}