Подтвердить что ты не робот

If, чтобы проверить $HOSTNAME в оболочке script

Поэтому я хочу установить несколько путей по-разному в зависимости от хоста, но, к сожалению, он не работает. Вот мой script:

if [$HOSTNAME == "foo"]; then
    echo "success"
else
    echo "failure"
fi

Вот что происходит:

-bash: [foo: command not found
failure

Я точно знаю, что $HOSTNAME - foo, поэтому я не уверен, в чем проблема. Я новичок в bash. Любая помощь будет оценена! Спасибо!

4b9b3361

Ответ 1

POSIX и переносимый способ сравнения строк в оболочке

if [ "$HOSTNAME" = foo ]; then
    printf '%s\n' "on the right host"
else
    printf '%s\n' "uh-oh, not on foo"
fi

Атрибут case может быть более гибким:

case $HOSTNAME in
  (foo) echo "Woohoo, we're on foo!";;
  (bar) echo "Oops, bar? Are you kidding?";;
  (*)   echo "How did I get in the middle of nowhere?";;
esac

Ответ 2

Вам не хватает места после открытия скобки. Это также хорошо "не анализировать" содержимое переменной с использованием двойных кавычек:

if [ "$HOSTNAME" = "foo" ]; then 
...