[sisyphus] Забавный результат выполнения test -f $file

Epiphanov Sergei =?iso-8859-1?q?serpiph_=CE=C1_nikiet=2Eru?=
Ср Мар 2 13:31:34 MSK 2005


В сообщении от 2 Март 2005 12:54 Yura Zotov написал:
> Это правильно, что bash работает вот так?
>
> $ file=; if test -f $file; then echo "x$file"; fi
> x
>
> Если правильно, то почему?

Выдержка из man bash:
...
Команды  test  и [ проверяют условные выражения с помощью
набора правил, основанного на количестве аргументов.

0 аргументов
        Выражение ложно.

1 аргумент
        Выражение  истинно  только  если  аргумент  -   не
        пустой.
...

Ваша команда преобразуется к виду:

if test -f; then echo "x"; fi

У Вас один аргумент, он не пустой, поэтому правильно.

-- 
С уважением, Епифанов Сергей



Подробная информация о списке рассылки Sisyphus