Bash 尾随空格的问题,如何解决?
我有一个脚本,我在第4行得到一个错误,即表达式中的Bash 尾随空格的问题,如何解决?,bash,script,Bash,Script,我有一个脚本,我在第4行得到一个错误,即表达式中的语法错误。我猜这是因为0“和befoe]之后有尾随空格。如果我删除,我会得到不同的错误。否则我如何修改这一行以使其正常工作 令人惊讶的是,我在第1行没有看到任何错误。这是一个较大脚本的片段,所以log是一个已经定义的变量 1 if [ "$Total" -ge 1024 ] 2 then 3 echo "Good to go" >> "$log" 4
语法错误。我猜这是因为0“
和befoe]
之后有尾随空格。如果我删除,我会得到不同的错误。否则我如何修改这一行以使其正常工作
令人惊讶的是,我在第1行没有看到任何错误。这是一个较大脚本的片段,所以log
是一个已经定义的变量
1 if [ "$Total" -ge 1024 ]
2 then
3 echo "Good to go" >> "$log"
4 if [ "$((a-(b + c))) -ge 0" ] ; then echo "YES" | tee -a "$log"; else echo "NO" | tee -a "$log"; fi
5 else
6 echo "can't proceed" >> "$log"
7 echo "NO" | tee -a "$log"
8 exit 0
9 fi
我实际上无法重现错误,但是在编写if
语句的方式中有一个明显的错误
-ge
必须是它自己的参数,不能将整个比较放在一个字符串中
if [ "$((a-(b + c)))" -ge 0 ]
这是正确的,但不能解释错误消息。在整个表达式周围使用双引号会使测试类似:“17-GE0”是非空字符串吗?“因为它总是非空的,所以它只需执行然后分支,不给出任何错误。是的,我也在想这个问题。让我试试@Barmar推荐的这个方法并确认一下。a
,b
和c
的确切值是多少?”?您可以使用declare-pabc
检查它们。另外,完整的错误消息是什么(通常会包含更多信息)。我无法重现错误。在]
之前肯定需要空格。请参阅,您将要阅读此shellcheck wili页面: