ash: Remove last param
我在一个只有sh和ash可用的busybox环境中。
现在我正在编写一个脚本,我需要将除最后一个参数之外的所有参数传递给ln。
到目前为止它看起来像这样:
1 2 3 4 5 6 | #!/bin/ash TARGET="/some/path/" for last; do true; done ln $@ $TARGET$last |
显然现在我将最后一个参数传递两次,首先是未修改的,然后在前面用$ TARGET修改。
我如何摆脱$ @中的最后一个参数?
你可以试试这种方式
1 2 3 4 5 6 | last_arg () { shift $(($#-1)) echo"$@" } last=$(last_arg"$@") echo"all but last = ${@%$last}" |
现在有一个工作的解决方案,它不是那么好,它改变了参数,但直到一个更好的解决方案出现,这将做到这一点。
1 2 3 4 5 6 7 | for last; do true; done while [["$1" !="$last" ]] ; do args="$args $1" shift done echo $args |