2014-12-19 82 views
-1

目前在Rhel6.5中使用了bash-4.1.2-15包,並且在此版本中不支持=~運算符。 通過在shell腳本中添加shopt -s compat31解決了此問題,但我不想將此命令放入所有shell腳本中。
我的項目中使用了很多shell腳本。如何在子shell腳本中使用「shop -s compat31」命令?

請提供解決方案。

回答

1

=~在該版本的bash中是絕對支持的。引用到操作符的參數的行爲只是改變了。

compat31使bash使用舊行爲而不是新行爲。

所以,如果你不想去粘,到所有的腳本,那麼你得到更新腳本,以使用=~運營商的新的行爲。

有關更改的說明,請參閱this question and answer

+0

有很多使用=〜運算符的shell腳本。請提供一個解決方案。 – yogesh 2014-12-22 04:31:47

+1

解決方案是什麼?你還沒有給出這個問題的例子。你剛剛說過'compat31''解決了這個問題。向我們展示有問題的線路,我們可以幫助您解決相關問題。但是這個問題幾乎肯定是在你的腳本中適當引用或不引用'=〜'運算符的RHS的問題。 – 2014-12-22 07:06:07

+0

我在許多shell腳本中使用=〜操作符。例如'if [[「$ 3」=〜「^ [0-9] + $」]];然後 abc [$ i] = $ 3 else hsexit「$ {ERROR_DETECT_INTERNAL_ERROR}」執行進入其他部分,因爲此包中的兼容性問題。如果在此腳本中添加了shopt -s compat31命令,則它工作正常。所以問題是我不知道有多少地方在所有shell腳本中都使用相同的運算符。如果可以解決這個問題? – yogesh 2014-12-26 05:10:57