19.6. Brak cudzysłowów w operacjach przypisania wywołuje błędy „command not found”
Problem
Przygotowany skrypt przypisuje pewne wartości zmiennej, ale podczas wykonywania kodu na ekranie jest wyświetlany komunikat command not found.
$ cat błąd1.sh #!/bin/bash - # typowy błąd: # X=$Y $Z # to nie to samo co: # X="$X $Z" # OPT1=-l OPT2=-h ALLOPT=$OPT1 $OPT2 ls $ALLOPT . $ $ ./błąd1.sh ./błąd1.sh: line 9: -h: command not found błąd1.sh drugi.sh pierwszy.sh $
Rozwiązanie
Wyrażenie zapisane po prawej stronie operatora przypisania (w instrukcji przypisania wartości zmiennej $ALLOPT
) musi być otoczone znakami cudzysłowu. Polecenie zapisane jako:
ALLOPT=$OPT1 $OPT2
musi zostać zastąpione kodem:
ALLOPT="$OPT1 OPT2"
Analiza
Przyczyną powstałego problemu jest znak ...
Get Bash. Receptury now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.