Как подать команду, только если приложение найдено?

Мне нужна помощь с небольшим скриптом оболочки.

Приведенный ниже код работает, и если sed найден, он продолжает выполнение скрипта, но если он не существует, он выйдет.

  if ! [ -x "$(command -v sed)" ]; then
    echo "Error: sed is not installed, please install sed." >&2
    exit
  fi

Что мне нужно будет изменить, чтобы сделать это, если система обнаружит ufw, чем она будет запускать эти команды.

    if ! [ -x "$(command -v ufw)" ]; then
      ufw allow 80/tcp
      ufw allow 443/tcp
    fi

1 ответ

Просто удалите восклицательный знак, что означает "нет". Итак, теперь вместо того, чтобы проверять, "нет" ли команды, мы проверяем, существует ли она.

   if [ -x "$(command -v ufw)" ]; then 
      ufw allow 80/tcp
      ufw allow 443/tcp
   fi

Другой вариант, если вы хотите сначала поймать его и выйти, если ваши условия не выполнены.

   if ! [ -x "$(command -v ufw)" ]; then 
        echo "Your error message here"
        exit # Stop execution
   fi
        # below code only runs if command exists
        ufw allow 80/tcp
        ufw allow 443/tcp



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