Сценарий оболочки Если синтаксическая ошибка

if ($(ipcs|grep test|wc -l)=630); then

echo "Shared Memory check passed"
fi

Я получаю ниже ошибку:

./Test1: line 25: 636=630: command not found
1
задан 24 August 2015 в 23:19

3 ответа

Добавить другую опцию: можно покончить с квадратными скобками и круглыми скобками в целом при помощи test встроенный вместо этого:

if test $(ipcs|grep test|wc -l) -eq 630; then 
    echo "Shared Memory check passed"
fi

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

Это также иллюстрирует что [ не часть if оператор. Встроенное [ и двоичный файл /usr/bin/[ просто команды как любой другой, например. ls или grep.

if оператор выполняет команду (команды) между if и then. Если последний имеет код выхода 0, это выполняет команды после then. [ управляйте выходами с 0 если его аргументы - который это интерпретирует как логическое выражение согласно определенным синтаксическим правилам - оценивают к истинному.

На самом деле Вы могли устранить if в целом и использование только [ команда, как в идиоматическом:

[ $(ipcs|grep test|wc -l) -ne 630 ] || echo "..."
3
ответ дан 25 August 2015 в 09:19
  • 1
    Спасибо!, Таким образом, я установил гнома человечности с шифрованием (домашней папки?), с того времени я получил пароль. Это отказало, начальная загрузка привычки больше. Тогда я установил человечность на своем ноутбуке. Но от него я не могу смонтировать или отформатировать этот PQI. Это всегда говорит, что это - только чтение-запись. Таким образом, как я мог использовать пароль для получения прав записи на этом PQI? – Robert GRZELKA 22 November 2016 в 23:19

Некоторые синтаксические ошибки

основа для, 'если' конструкции в ударе это:

if [ expression ];
then
    # code if 'expression' is true.
fi
<час>

вот исправленная версия

if [ "$(ipcs|grep test|wc -l)" -eq 630 ]; then 
    echo "Shared Memory check passed"
fi

, или с [[…]] к предотвращает разделение слова значений переменных без кавычек douple

if [[ $(ipcs|grep test|wc -l) -eq 630 ]]; then 
    echo "Shared Memory check passed"
fi

или лучше

if [[ $(ipcs|grep -c test) -eq 630 ]]; then 
    echo "Shared Memory check passed"
fi
7
ответ дан 25 August 2015 в 09:19

По существу существует несколько способов создать if условные выражения в bash; каждый обрисован в общих чертах в ответе A.B.'s; другой, который вероятен тот, который Вы пытаетесь использовать, включает использование двойные круглые скобки, который является способом управлять выражениями / переменные в bash в больше C-стиля путь, и который, на его определение, требует двойных круглых скобок для работы (ум, что это не будет работать, например, на сравнения строк):

if (($(ipcs|grep test|wc -l)==630)); then
    echo "Shared Memory check passed"
fi

[еще 114] информация о "Конструкции Двойных Круглых скобок"

6
ответ дан 25 August 2015 в 09:19
  • 1
    Я сделал mkusb. Я использую его для стирания данных, которые могли бы перепутать систему, и после этого возможно создать новую таблицу разделов и файловую систему (системы). Скажите мне, что Вы хотите, и я попытаюсь помочь Вам:-), – sudodus 22 November 2016 в 01:30

Другие вопросы по тегам:

Похожие вопросы: