Bash: [-f] && echo 1 # Какой файл проверен правильно? - PullRequest
2 голосов
/ 07 октября 2019

Какой файл проверяется как существующий и обычный, когда я не добавляю имя файла в выражение: [ -f ] && echo 1?

$ [ -f ] &&  echo "1"
1

1 Ответ

5 голосов
/ 07 октября 2019

Файл не проверен. [ интерпретирует свои аргументы на основе числа аргументов, которые он получает (игнорируя ]).

В этом случае, только один аргумент, -f не является унарным оператором;это просто непустая строка. Это означает, что он эквивалентен [ -n -f ], что успешно, потому что аргумент унарного оператора -n действительно не пустой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...