シングルとダブルは異なる動作をします

シングルとダブルは異なる動作をします

これはより大きなコードスニペットに含まれる単純なコードの縮小ですが、これが私が混乱している部分です。

if [ $some_line == "text" ]
then

その後、作業していた他のプログラムに同じコードを使用し続けたが、「==」を「=」に変更しないと、コードは機能しませんでした。私はここで同じように動作することを示唆しているいくつかのスレッドを見てきました。

if [ $some_line = "text" ]
then

したがって、最初のコードスニペットは、「単一の同じ」に変更しない限り、server1では機能しますが、server2では機能しません。両方のサーバーの環境はまったく同じです。

誰でもこれを説明できますか?ありがとうございます!

編集 - 毎回「bash myscript.sh」でスクリプトを実行します。

答え1

==のテスト=と同じです。[ ]bash

==動作しませんsh=

両方のスクリプトを実行するために同じシェルを使用していますか?

例:

$ cat test1
#!/bin/bash
if [ "a" == "a" ];then echo match;fi
$ ./test1
match
$ cat test2
#!/bin/bash
if [ "a" = "a" ];then echo match;fi
$ ./test2
match
$ cat test3
#!/bin/sh
if [ "a" = "a" ];then echo match;fi
$ ./test3
match
$ cat test4
#!/bin/sh
if [ "a" == "a" ];then echo match;fi
$ ./test4
./test4: 2  [: a: unexpected operator

関連情報