首页 > 解决方案 > ash:删除最后一个参数

问题描述

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

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

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

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

for last; do true; done

ln $@ $TARGET$last

显然,现在我将最后一个参数传递了两次,第一次未修改,然后在其前面使用 $TARGET 进行修改。

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

标签: shellshbusyboxash

解决方案


你可以试试这个方法

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

推荐阅读