Jak mogę przypisać wartość do parametru pozycyjnego w Bash? Chcę przypisać wartość do parametru domyślnego:Przypisywanie do parametru pozycyjnego
if [ -z "$4" ]; then
4=$3
fi
Wskazanie, że 4 nie jest poleceniem.
Jak mogę przypisać wartość do parametru pozycyjnego w Bash? Chcę przypisać wartość do parametru domyślnego:Przypisywanie do parametru pozycyjnego
if [ -z "$4" ]; then
4=$3
fi
Wskazanie, że 4 nie jest poleceniem.
set
wbudowany jest jedynym sposobem, aby ustawić parametry pozycyjne
$ set -- this is a test
$ echo $1
this
$ echo $4
test
gdzie --
chroni przed rzeczami, które wyglądają jak opcji (np -x
).
W twoim przypadku może chcesz:
if [ -z "$4" ]; then
set -- "$1" "$2" "$3" "$3"
fi
ale będzie to prawdopodobnie bardziej jasne jak
if [ -z "$4" ]; then
# default the fourth option if it is null
fourth="$3"
set -- "$1" "$2" "$3" "$fourth"
fi
można również zajrzeć do parametru liczyć $#
zamiast badań dla -z
.
Możesz robić co chcesz przez wywołanie skryptu ponownie z czwartego parametru:
if [ -z "$4" ]; then
$0 "$1" "$2" "$3" "$3"
exit $?
fi
echo $4
Wywołanie Powyższy skrypt jak ./script.sh one two three
wyjściem będzie:
trzy
'./ $ 0' nie zadziała, jeśli dostęp do skryptu będzie możliwy za pośrednictwem PATH, '$ 0' powinno być w porządku samo w sobie, które działałoby dla'./Script' i '/ usr/local/bin/script' itd. – msw