sh unexpected operator

Dan Lukes dan at obluda.cz
Mon May 27 12:20:32 CEST 2013


Radek Krejča wrote:
> if [ -z $souburek ]; then

> Funguje to. Funguje to navic dobre. Ale nekdy v prubehu scriptu (at demon bezi ci ne) to vyhodi hlasku:
> [: souburek: unexpected operator

Problem nastane, pokud je promenna obsahuje nejaky "divny" znak, ktera
zpusobi, ze radek shellu s podminkou je syntakticky vadny.

Mohl bysis samozrejem vypisovat hodnotu te promenne, abys zjistil, ktera
konkretni hodnota problem pusobi, ale daleko lepsi bude napsat to proste
"bezpecne":

> if [ -z "$souburek" ]; then

Doporucuju promenne psat VZDYCKY do uvozovek, ledaze sis jisty, ze to s
ohledem na vsechny mozne hodnoty, ktere mohou byt v konkretni promenne
realne ulozene opravdu neni potreba.

I kdyz mozna neni od veci zjistit jaka konkretni hodnota problem pusobi
- mozna zjistis, ze script ma vic nez jednu vadu, a vykazuje "false
positives" kdy nespravne detekuje beh neceho co neni to co chces
detekovat. Poznavat beh konkretniho programu/scriptu podle vyskytu
jedineho slova ve vypisu 'ps' je totiz spis hack nez dobry napad.
Napriklad staci aby na tom stroji bezel sendmail a zrovna prichazel
dopis od odesilatele souburek at bublifuk.cz ...

Dan



More information about the Users-l mailing list