Добавить & ldquo; not & rdquo; для оператора if в сценарии оболочки

Что касается смены на SSD:

Мне было бы неинтересно размещать раздел подкачки на SSD. Обмен, как и раньше, используется только тогда, когда нет ОЗУ. Но тогда есть «несколько» последовательных записей и «много» случайных чтений. Это как раз форма использования SSDs. - Этот же принцип используется технологией microsoft «readyboost», только с USB-Flashdrives.

1
задан 4 January 2014 в 21:10

2 ответа

В сценариях оболочки нет оператора, а это !, но вы не используете его совершенно правильно.

Поместите пробел между оператором ! и его операндом и оставьте круглые скобки. Это должно работать для всех оболочек в стиле POSIX, включая bash и sh / dash.

if ! id $User > /dev/null 2>&1
then
    echo "This user does NOT exists.  Please create that user before using this script.\n"
    exit
fi

Вы можете использовать круглые скобки для группировки, если хотите, хотя в этом нет необходимости дело. Для выполнения выражения в скобках создается новая подоболочка. Оператор ! должен иметь пробел между ним и символом (. (Пространства вокруг самих скобок необязательны.)

if ! (id $User > /dev/null 2>&1)
then
    echo "This user does NOT exists.  Please create that user before using this script.\n"
    exit
fi

См. оболочки в стиле POSIX для некоторых хороших альтернатив и рекомендаций стиля. (Кроме того, благодаря Gilles для некоторых исправлений об использовании круглых скобок.)

0
ответ дан 24 May 2018 в 17:59
  • 1
    Пробелы не нужны в круглых скобках. (Однако они необходимы для скобок и скобок. Нет, я не знаю, почему.) Скобки для создания подоболочек работают во всех оболочках в стиле Бурна. – Gilles 14 September 2013 в 03:31
  • 2
    @ Гилс. Ты прав. Я теперь исправил это. – Eliah Kagan 14 September 2013 в 03:31

Вопросы, подобные этому, получаются в «Расширенном руководстве по созданию Bash-Scripting», который доступен для просмотра и доступен для загрузки по адресу http://www.tldp.org/guides.html

0
ответ дан 24 May 2018 в 17:59

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

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