/ / W śledzeniu parametrów skryptu bash - bash

W śledzeniu parametrów skryptu bash - bash

Mam to polecenie w bash:

cmd -c -s junk text.txt

Jeśli zmienię polecenie na

cmd -c junk -s text.txt

jak śledzić, który parametr ($2 lub $3) jest ustawione na junk?

Próbuję użyć pętli for, ale nie wiem, jak się dowiedzieć junk od $@.

Odpowiedzi:

1 dla odpowiedzi № 1

Musisz użyć getopts wewnątrz twojego skryptu. Coś takiego powinno działać:

while getopts "c:s:" optionName; do
case "$optionName" in
s) arg="$OPTARG"; echo "-s is present with [$arg]";;
c) arg="$OPTARG"; echo "-c is present with [$arg]";;
esac
done

0 dla odpowiedzi nr 2

Z pokazanego przykładu wydaje się, że -s opcja ma jeden argument i to jest junk w pierwszym przykładzie. Jednak semantyka wydaje się zmieniać w drugim przykładzie i najwyraźniej -c przyjmuje jeden argument i to znowu junk. Również w drugim przykładzie wydaje się -s trwa text.txt jako argument.

Ogólnie argumenty w komendach basha nie mają stałych pozycji, ale jeśli opcja przyjmuje argument, to należy bezpośrednio postępować zgodnie z parametrem opcji (w pierwszym przypadku -s).

Jak zauważył anubhava, możesz użyć getopts do przeanalizowania argumentów dla twojego skryptu. Nadal nie będzie to działać w przypadku, gdy zmienisz całą semantykę, tak jak się wydaje.