我没有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输出设置为变量时,我在做错了什么?
答案 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
摆脱=