我的bash脚本如下所示。我想检查git中是否存在存储库,如果不存在,则再运行一些其他命令。
if [ `git ls-remote --heads $REPOSITORY_PATH $BRANCH | wc -l` = false ]
then
# Do something if it doesn't exist...
fi
但是我遇到的问题是,无论if
中的语句返回0
还是1
,它似乎总是将语句评估为true。我在这里想念什么吗?如果它返回0
,我希望它运行;如果它返回1
,我希望它不运行。
答案 0 :(得分:2)
bash
没有布尔数据类型; false
只是一个普通的字符串,并且您的管道正在输出文字字符串0
(根据您的实现,可能会有一些空格填充,而不是布尔值。
您需要进行显式的数值比较:
if [ "$(git ls-remote --heads "$REPOSITORY_PATH" "$BRANCH" | wc -l)" -eq 0 ]; then
(或-ne
,如果希望在输出 时执行此命令)。