Robię skrypt bash, a teraz mam jedno wywołanie zmiennej source
i jedną tablicę samples
, tak jak poniżej:
source='country'
samples=(US Canada Mexico...)
ponieważ chcę zwiększyć liczbę źródeł (a każde źródło ma swoje własne próbki), próbowałem dodać kilka argumentów, aby to zrobić. Próbowałem tego:
source=""
samples=("")
if [ $1="country" ]; then
source="country"
samples="US Canada Mexico..."
else
echo "try again"
fi
ale kiedy uruchomiłem skrypt source countries.sh country
, nie działało. Co ja robię źle?
$1="country"
kontra$1 = "country"
Odpowiedzi:
Nie zapomnij o spacjach:
źródło
samples="US Canada Mexico..."
po wprowadzeniu tworzenia tablicy wcześniejsamples=(US Canada Mexico...)
?if [ "$1" = "country" ]; then
.Możesz użyć operatora „=” lub „==” do porównania ciągów w bash. Ważnym czynnikiem jest odstęp w nawiasach. Właściwą metodą jest umieszczenie w nawiasach odstępów, a operatorów - umieszczenie odstępów. W niektórych przypadkach działają różne kombinacje; jednak poniższe zamierzenie ma być uniwersalnym przykładem.
Uwaga: podwójne nawiasy klamrowe są obsługiwane nieco inaczej niż pojedyncze nawiasy ...
Mam nadzieję że to pomogło!
źródło
Wygląda na to, że chcesz przeanalizować argumenty wiersza polecenia w skrypcie bash. Ostatnio sam tego szukałem. Natknąłem się na następujące, które moim zdaniem pomogą ci w analizie argumentów:
http://rsalveti.wordpress.com/2007/04/03/bash-parsing-arguments-with-getopts/
Dodałem poniższy fragment jako tl; dr
./script.sh -t test -r serwer -p hasło -v
źródło