我正处于一个只有sh和ash可用的busybox环境中。
现在我正在编写一个脚本,我需要将除最后一个参数之外的所有参数传递给ln。
到目前为止看起来像这样:
#!/bin/ash
TARGET="/some/path/"
for last; do true; done
ln $@ $TARGET$last
显然现在我将最后一个参数传递两次,首先是未修改的,然后在前面用$ TARGET修改。
如何摆脱$ @中的最后一个参数?
答案 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