如何添加" shopt -s compat31"所有shell脚本中的命令?

时间:2014-09-26 06:40:58

标签: linux bash

Bash包已从 bash-3.2-32 更新为 bash-4.1.2-15.el6_5.1.x86_64 。升级后,正则表达式匹配条件运算符=〜可以正则表达式匹配以停止工作。如何添加

shopt -s compat31
所有shell脚本中的

命令?我不想一个接一个地在所有脚本中添加此命令。

我已将上述命令添加到.bashrc中,但在shell脚本上没有反映兼容性。 命令结果:

compat31 is off in script.
[root@localhost log]# sh abc.sh
compat31        off

Compat31 is  on at command prompt screen.
[root@localhost log]# shopt |grep compat31
compat31        on
[root@localhost log]#

2 个答案:

答案 0 :(得分:1)

一些观察结果:

  • 正则表达式运算符changed in 3.2alpha,但在此之后我无法看到对任何更改的引用。换句话说,没有提到你提到的版本之间的变化。
  • 3.2alpha中=~行为的变化只是将引用的右手字符串视为文字字符串匹配而不是正则表达式。你只需要从中删除任何引号,使你的旧代码与3.2alpha一起使用。
  • 正则表达式运算符仍然非常有效,并且很可能比3.1中更好。
  • 除非您绝对无法更改代码,否则最好与当前版本兼容。过多地使用旧代码会使以后迁移更加困难,并且更容易出现细微的错误。

答案 1 :(得分:1)

一种选择是使用

运行脚本
bash -O compat31 oldscript.bash

而不是编辑脚本本身。