ash:删除最后一个参数

时间:2018-06-09 10:06:39

标签: shell sh busybox ash

我正处于一个只有sh和ash可用的busybox环境中。

现在我正在编写一个脚本,我需要将除最后一个参数之外的所有参数传递给ln。

到目前为止看起来像这样:

#!/bin/ash
TARGET="/some/path/"

for last; do true; done

ln $@ $TARGET$last

显然现在我将最后一个参数传递两次,首先是未修改的,然后在前面用$ TARGET修改。

如何摆脱$ @中的最后一个参数?

2 个答案:

答案 0 :(得分:1)

你可以试试这种方式

last_arg () {
shift $(($#-1))
echo "$@"
}
last=$(last_arg "$@")
echo "all but last = ${@%$last}"

答案 1 :(得分:0)

现在有一个可行的解决方案,它不是那么好,并且它会改变参数,但是直到找到更好的解决方案,这将会实现。

for last; do true; done
while [[ "$1" != "$last" ]] ; do
    args="$args $1"
    shift
done

echo $args