如何设置其值可能为空的Bash变量?

时间:2015-11-02 17:22:09

标签: bash

我没有Bash专家,我很困惑为什么我的代码无法工作。

od = `pip list --outdated | cut -d ' ' -f 1`; if [ ${#od} -eq 0 ]; then echo 'Up to date'; else echo 'Outdated stuff!'; echo pip install -U $od; fi

我得到了

od: =: No such file or directory
od: =: Bad file descriptor
-bash: 0: command not found
-bash: [: -neq: unary operator expected

当我尝试将过期软件包名称列表的test输出设置为变量时,我在做错了什么?

2 个答案:

答案 0 :(得分:1)

不要在赋值中围绕=运算符放置空格。

od=`pip list --outdated | cut -d ' ' -f 1`; if [ ${#od} -eq 0 ]; then echo 'Up to date'; else echo 'Outdated stuff!'; echo pip install -U $od; fi

另外,不要使用反向标记,而是在$(...)中包裹子shell:

od=$(pip list --outdated | cut -d ' ' -f 1); if [ ${#od} -eq 0 ]; then echo 'Up to date'; else echo 'Outdated stuff!'; echo pip install -U $od; fi

最后,一种更简单的方法来检查od的值是否为空:

if [ ! "$od" ]; then ...

所以这给了:

od=$(pip list --outdated | cut -d ' ' -f 1); if [ ! "$od" ]; then echo 'Up to date'; else echo 'Outdated stuff!'; echo pip install -U $od; fi

答案 1 :(得分:0)

od=`pip list --outdated | cut -d ' ' -f 1`; if [ ${#od} -eq 0 ]; then echo 'Up to date'; else echo 'Outdated stuff!'; echo pip install -U $od; fi

摆脱=

周围的空格