LINUX.ORG.RU

История изменений

Исправление vodz, (текущая версия) :

Ну нате:

#!/bin/ash

foo() {
        echo "args=$# $@"
}

foo_without_last_arg() {
        local n=1
        local sa
        while [ $n -lt $# ]; do
                eval "local a_$n=\$$n"
                sa="$sa \"\$a_$n\""
                n=$(($n+1))
        done
        eval "set --$sa"
        foo "$@"
}

foo_without_last_arg
foo_without_last_arg a1
foo_without_last_arg a1 a2
foo_without_last_arg a1 a2 a3
foo_without_last_arg "a1 x" "*" '"' 4

Исходная версия vodz, :

Ну нате:

#!/bin/ash

foo() {
        echo "args=$# $@"
}

foo_without_last_arg() {
        if [ $# -le 1 ]; then
                foo
                return $?
        fi
        local n=1
        local sa
        while [ $n -lt $# ]; do
                eval "local a_$n=\$$n"
                sa="$sa \"\$a_$n\""
                n=$(($n+1))
        done
        eval "set -- $sa"
        foo "$@"
}

foo_without_last_arg
foo_without_last_arg a1
foo_without_last_arg a1 a2
foo_without_last_arg a1 a2 a3
foo_without_last_arg "a1 x" "*" 3