<分区>
我在我的 bash 脚本中使用这个条件
if [ $USE_TEST -eq 1 ]; then
echo "Hello"
fi
我将 USE_TEST
作为环境变量传递。
如果我传递 env 变量然后 shell 执行正常但如果我没有那个变量然后我得到这个
[: -eq: unexpected operator
我该如何解决
<分区>
我在我的 bash 脚本中使用这个条件
if [ $USE_TEST -eq 1 ]; then
echo "Hello"
fi
我将 USE_TEST
作为环境变量传递。
如果我传递 env 变量然后 shell 执行正常但如果我没有那个变量然后我得到这个
[: -eq: unexpected operator
我该如何解决
最佳答案
这是引用很重要的事情之一;当未定义 $USE_TEST 时,您的语句将扩展为:
if [ -eq 1 ]; then
常见修复:
if [ "$USE_TEST" -eq 1 ]; then
...虽然这也意味着切换到字符串比较,因为 -eq
将中断一个空字符串:
if [ "$USE_TEST" = 1 ]; then
但您也可以考虑使用 [[
(这是 bash 内置的)或 ${USE_TEST:-0}
(指定默认值)。
关于linux - 来自 [ $var -eq 1 ] 的 "Unexpected operator",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32043412/