linux - 来自 [ $var -eq 1 ] 的 "Unexpected operator"

标签 linux bash shell

<分区>

我在我的 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/

相关文章:

shell - 第二次配置会重新运行脚本中的所有 shell 命令吗?

javascript - 如何使用 jq 命令行实用程序执行 JSON 对象更新

linux - 如何使用 shell 脚本查找起始括号和相应结束括号之间的模式

linux - cronjob 计时是从它创建的那一刻开始还是预设?

linux - 您如何访问您在 Bash 中获取的文件的基本文件名?

linux - 使用 bash 脚本从 Linux 中的文本获取一些报告

linux - 为什么我的哈希值(来自 csv)的大小恰好是行数值的一半?

Linux 音频控制 web alsamixer

bash - 在内联运行命令中访问容器环境变量

linux - 由于 mkdir 拒绝,无法安装软件