O'Reilly logo

Bash. Receptury by Cameron Newham, JP Vossen, Carl Albing

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

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 ...

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required