24399


細かい話ですが、testコマンドの文字列比較で、

[code]

    $ test "${hoge}" = 'aaa'
    
[/code]

のように、`=`で一致しているかを評価するという説明は  
Manpageに載っています。一方で、

[code]

    $ test "${hoge}" == 'aaa'
    
[/code]

でも一致しているかを評価できるという説明が見当たりません。  
試してみると一致しているか評価できているので、  
使えると思うのですが、何か推奨されていない理由があるのでしょうか？


CC BY-SA 3.0
2016-04-28T00:40:08.357
24398
2016-04-28T01:02:19.637
15147
question
bash shellscript sh
testコマンドの文字列比較条件式で'=='は許容されているのか？


オイラんちにある HP-UX 11.11 の `/bin/sh` 上では

[code]

    $ test a = a && echo yes
    yes
    $ test a == a && echo yes
    sh: ==: A test parameter is not valid.
    
[/code]

となりました。一方でその HP-UX 11.11 上の bash 4.3.30 では `test a == a` は動作します。

`bash-4.3.30/test.c` にも `bash-4.3.30/doc/bash.info` にも  
`==` は `=` と同様文字列の等値比較であると書かれています。  
POSIX 適合性を取るなら `=` を使え、とありますね。  
`==` は `bash` の拡張機能でしょう。

`bash` は他にも拡張機能があるので POSIX 適合性優先なら注意する必要がありそうです。  
[シェルスクリプトのcase文の評価について教えてください。](https://ja.stackoverflow.com/questions/14900/)


CC BY-SA 3.0
2016-04-28T01:02:19.637
24399
2016-04-28T01:02:19.637
2017-04-13T12:52:39.113
-1
8589
24398
answer