Linux: [: missing ] 或unexpected operator错误 或 Syntax error: Bad for loop variable

解决方案:

将==改成= 因为在bash中默认的 判断语句是=。
虽然鸟哥私房菜里面说两个等号 == 与一个等号 = 效果一样,都是判断,但是实际测试时候发现==会报错,改为一个=号即可。

找到了出现这些问题的原因:

  • GNU/Linux 操作系统中的 /bin/sh 本是 bash (Bourne-Again Shell) 的符号链接,但鉴于 bash 过于复杂,有人把 ash 从 NetBSD 移植到 Linux 并更名为 dash (Debian Almquist Shell),并建议将 /bin/sh 指向它,以获得更快的脚本执行速度。Dash Shell 比 Bash Shell 小的多,符合POSIX标准。
  • Debian和Ubuntu中,/bin/sh默认已经指向dash,这是一个不同于bash的shell,它主要是为了执行脚本而出现,而不是交互,它速度更快,但功能相比bash要少很多,语法严格遵守POSIX标准。

解决方案:

sudo dpkg-reconfigure dash

将系统的默认shell由dash改为bash

发布了35 篇原创文章 · 获赞 2 · 访问量 4407

猜你喜欢

转载自blog.csdn.net/weixin_41072132/article/details/105055632