38

所以我想根据主机设置一些不同的路径,但不幸的是它不起作用。这是我的脚本:

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

这就是发生的事情:

-bash: [foo: command not found
failure

我确定 $HOSTNAME 是 foo,所以我不确定问题出在哪里。不过,我对 bash 还是很陌生。任何帮助,将不胜感激!谢谢!

4

3 回答 3

65

在 shell 中比较字符串的 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
于 2013-04-12T13:57:35.060 回答
2

您在左括号后缺少一个空格。使用双引号“不解析”变量内容也很好:

if [ "$HOSTNAME" = "foo" ]; then 
    ...
于 2013-04-12T13:56:54.913 回答
2
#!/bin/bash

if [[ $(hostname) == "home" ]] || [[ $(hostname) == "home2" ]]; then
    echo "True"
fi
于 2021-02-06T16:46:09.220 回答