[解決済み】シェルの等式演算子(=、==、-eq)。
2022-04-07 15:25:06
質問
とはどのような違いがあるのでしょうか。
=
,
==
と
-eq
シェルスクリプトで?
という違いはあるのでしょうか?
[ $a = $b ]
[ $a == $b ]
[ $a -eq $b ]
という単純なものなのでしょうか。
=
と
==
は、変数に数値が含まれているときのみ使用されるのですか?
どのように解決するのですか?
その逆です。
=
と
==
は文字列比較のためのものです。
-eq
は数値のもの用です。
-eq
とは同系列のものです。
-lt
,
-le
,
-gt
,
-ge
と
-ne
ということです。
==
はバッシュ主義です。POSIXの
=
. bashではこの2つは等価であり、プレーンなshでは
=
は、唯一動作が保証されているものです。
$ a=foo
$ [ "$a" = foo ]; echo "$?" # POSIX sh
0
$ [ "$a" == foo ]; echo "$?" # bash specific
0
$ [ "$a" -eq foo ]; echo "$?" # wrong
-bash: [: foo: integer expression expected
2
(余談です。変数の拡張を引用してください。上の二重引用符を省かないでください)
を書くのであれば
#!/bin/bash
スクリプトを使用することをお勧めします。
を使って
[[
代わりに
. 2倍化されたフォームは、より多くの機能を持ち、より自然な構文で、あなたをつまずかせるようなゴチャゴチャは少なくなっています。の周りに二重引用符は必要ありません。
$a
ひとつは
$ [[ $a == foo ]]; echo "$?" # bash specific
0
こちらもご覧ください。
関連
-
[解決済み] 環境変数を表示/エコーするには?
-
[解決済み] Bashシェルスクリプトでディレクトリが存在するかどうかを確認するにはどうすればよいですか?
-
[解決済み] シェルで、「2>&1」はどういう意味ですか?
-
[解決済み] Bashで文字列をデリミターで分割するには?
-
[解決済み] Bashでコマンドの出力に変数を設定するにはどうすればよいですか?
-
[解決済み] Bashシェルスクリプトの入力引数の存在確認
-
[解決済み] シェルスクリプトでブール変数を宣言して使用するにはどうすればよいですか?
-
[解決済み] エクスポートあり/なしの変数の定義
-
[解決済み] シェルコマンドを実行しながらエコーする方法
-
[解決済み] シェル変数の周りに中括弧が必要なのはどんなとき?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Docker ubuntu イメージ - bash: man: コマンドが見つかりません。
-
[解決済み] /bin/sh: apt-get: 見つかりません。
-
[解決済み] OS X で 'find' コマンドを使用して 'sed' を使用するとエラーが発生する。"無効なコマンドコードです。"
-
[解決済み] bash スクリプトの "${BASH_SOURCE[0]}" と $( cd $( dirname "xxx" && pwd )) の意味について
-
[解決済み] eval "$(docker-machine env default) "とする。
-
[解決済み] awk で行を飛ばすにはどうしたらいいですか?
-
[解決済み] bash スクリプトを実行しているドッカーエントリーポイントが "パーミッション拒否" になる
-
[解決済み] パイプと二重パイプのどちらの OR 演算子を使うか?
-
[解決済み] findコマンドと一緒に使用するとエラー 'rm: missing operand' が発生する。
-
[解決済み] Bashのforeachループ