Подобные скобки в bash
создают подоболочки для запуска вложенных команд. Они вообще не нужны для команды sed
, и они не являются тем, что вы ищете для проверки значений вif
команда.Вместо использования обратных кавычек предпочтительным способом выполнения команды и сохранения ее значения в настоящее время является $(...)
синтаксис.
Для арифметических тестов вы можете использовать двойные парены ((...))
или [
синоним test
или bash
имеет расширенную версию [[...]]
.Особенно для [
пробел после скобки необходим, поскольку в этом случае вы пытаетесь выполнить команду [
.
Собрав все это вместе, мы можем обновить ваш фрагмент следующим образом:
#!/bin/bash
value=$(sed -n 1p tmp.txt)
if [[ $value -eq 0 ]]
then
echo "I wish i could eat cheese again"
else
echo "theres still more barcodes left"
fi
(Кроме того, я исправил строку shebang так, чтобы она указала на /bin/bash
, вместо исполняемого файла, явно называемого /bin/bash/sh
которого, скорее всего, не существует)