bash:为什么在没有满足条件的情况下运行此命令?

时间:2017-09-30 02:43:15

标签: bash

我正在尝试整合我的dotfiles,所以我只有一套用于我的本地OSX机器和Linux服务器。我有这个条件语句,但$(brew --prefix)正在linux机器上运行,即使该块不应该运行...

SYSTEM=`uname -a | cut -d" " -f1`
# These things are system specific
if [ $SYSTEM=="Darwin" ]; then
    if [ -f $(brew --prefix)/etc/bash_completion ]; then
        . $(brew --prefix)/etc/bash_completion
    fi

    for file in ~/.completion/* ; do
      if [ -f "$file" ] ; then
        . "$file"
      fi
    done

elif [ $SYSTEM=="Linux" ]; then
    alias upgrade='sudo apt-get update && sudo apt-get upgrade'

    # save the IP address in case I need it later
    export IP_ADDRESS=`ifconfig eth0 | grep 'inet addr:' | cut -d: -f2 | awk '{ print $1}'`
fi

如果我回应linux机器上的$SYSTEM变量,它表示它是Linux,但bashrc的源代码在brew --prefix命令上失败。

无论如何评估该变量?我有办法改变它吗?

1 个答案:

答案 0 :(得分:3)

==

周围需要空格
if [ $SYSTEM == "Darwin" ]

否则bash的行为就像你写的那样:

if [ "some-non-empty-string" ]

总是true,而不是:

if [ "" ]

总是false