Bash 尾随空格的问题,如何解决?

Bash 尾随空格的问题,如何解决?,bash,script,Bash,Script,我有一个脚本,我在第4行得到一个错误,即表达式中的语法错误。我猜这是因为0“和befoe]之后有尾随空格。如果我删除,我会得到不同的错误。否则我如何修改这一行以使其正常工作 令人惊讶的是,我在第1行没有看到任何错误。这是一个较大脚本的片段,所以log是一个已经定义的变量 1 if [ "$Total" -ge 1024 ] 2 then 3 echo "Good to go" >> "$log" 4

我有一个脚本,我在第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页面: