Подводные камни в Bash №9
Команда if [ bar = "$foo" ]; проверяет, равны ли два значения.
читать первым в телеграм читать первым в макс
Тут самое важно это — пробелы, про кавычки повторять не буду, ты это уже и так знаешь. Все уши прожужал.
Неправильно:
[bar="$foo"]
[ bar="$foo" ]
[[bar="$foo"]]
- Нельзя слеплять всё вместе. Это хуёва даже в плане кодстайла.
- Нет пробела вокруг знака «=».
- Аналогично, всё слеплено.
Правильный синтаксис:
if [ bar = "$foo" ]; then
или
if [[ bar = "$foo" ]]; then
Почему?
Потому что
[, =, ] это отдельные символы, первая скобка вообще команда test. А если ты все слепляешь, Bash посчитает тебя долбаёбом и отправит в пешее эротическое.Главное правило — всегда ставь пробелы между каждым элементом в условии.
