2012-12-07 13 views

Odpowiedz

29

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.

3

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

'./ $ 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

Powiązane problemy