If, чтобы проверить $HOSTNAME в оболочке script
Поэтому я хочу установить несколько путей по-разному в зависимости от хоста, но, к сожалению, он не работает. Вот мой script:
if [$HOSTNAME == "foo"]; then
echo "success"
else
echo "failure"
fi
Вот что происходит:
-bash: [foo: command not found
failure
Я точно знаю, что $HOSTNAME - foo, поэтому я не уверен, в чем проблема. Я новичок в bash. Любая помощь будет оценена! Спасибо!
Ответы
Ответ 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
...