Назад | Перейти на главную страницу

Shell Script = Команда «Тест» = Простой вопрос

фрагмент сценария запуска выглядит так:

ВКЛЮЧЕНО = 1

test "$ ENABLED"! = "0" || выход 0

Проблема в том, что независимо от того, установлено ли для Enabled значение 0 или 1, сценарий всегда завершается на этой строке. Я поискал "man test" и, насколько я понимаю, test всегда оценивает выражение, а затем завершает работу (!!) с кодом возврата? Это верно. Итак, этот сценарий всегда будет завершаться в этой строке независимо от значения переменной? (так что это глючит).

Спасибо!! Йенс

#!/bin/bash
ENABLED=1
test "$ENABLED" != "0" || exit 0
echo "wasn't zero"

когда я запускаю это, я получаю

[madhatter@risby tmp]$ ./foo
wasn't zero

Итак, мне кажется, что либо

  • вы используете странный интерпретатор (в какой оболочке вы его запускаете) или
  • вы выбрали неправильный `test` (можете ли вы выполнить` which test` и сообщить нам результаты, или явно использовать `/ usr / bin / test`?), или
  • (извините за это) вы ошибаетесь в том, что он не доходит до следующей строки (как сказал выше Янне, можем ли мы увидеть больше сценария оболочки, или вы могли бы поставить однострочную канарейку, например, мой оператор эха немедленно после теста?

Этот тестовый оператор в основном говорит: «выйти с кодом возврата 0 (что обычно означает ОК в этом чудесном мире Linux / Unix), если для $ ENABLED установлено значение, отличное от 0».

Это прояснило вас вообще? Трудно сказать больше, не увидев полного сценария запуска :-)