
他人が作ったシェルスクリプトを見てるんですが、私自身初心者でいくつかよく分からないところがあります。
if文条件式(というよりtestの条件)の等号記号についてです。
if [ 条件式 ]; then で、
1)2つの文字列が等しいかどうか確認する際に用いる記号は
=
でいいんでしょうか?
テキストとして見ている書籍には、”=”で書いてあるのですが、今動いているというスクリプトには”==”と記述してあります。
2)2つの数値が等しいかどうか確認する際に用いる記号は
-eq
でいいんでしょうか?
今動いているというスクリプトには”==”と記述してあります。”==”と記述してもインタプリタのほうで吸収してくれて動かしてくれているのでしょうか?
今、見ている書籍のサンプルソースにも、文字列比較で、"="と書いてあったり、"=="と書いてあったりとよく分かりません。条件式はif文、それ以外で違ったりしてくるんでしょうか?
すみません。よろしくお願いします。
No.1ベストアンサー
- 回答日時:
bashのマニュアルのURLを貼ります。
>if [ 条件式 ]; then で、
>1)2つの文字列が等しいかどうか確認する際に用いる記号は = でいいんでしょうか?
= , == のどちらでもOKです。
= の方は、bashの元となったbshから使われている文字列比較演算子です。
== の方は、恐らくC言語で使われている演算子です。C言語では、=(代入), == (等価比較)を区別しています。
bashで == が = の代わりに使用できるようになったのは、bash Ver. 2.02以降です。
>2)2つの数値が等しいかどうか確認する際に用いる記号は -eq でいいんでしょうか?
>今動いているというスクリプトには”==”と記述してあります。”==”と記述してもインタプリタのほうで吸収してくれて動かしてくれているのでしょうか?
-eq, == どちらでもOKです。
上記と同様に、-eq はbshの頃から使われている数値比較演算子です。
== も使用できます。
参考URL:http://www.linux.or.jp/JM/html/GNU_bash/man1/bas …
No.2
- 回答日時:
きっとCからの連想で==と書いてしまい、エラーになる人が続出するために機能追加されたんでしょうけど、/bin/sh で実行することも考えると = と書くように心がけたほうがいいでしょうね。
また、= も == も文字列としての比較なので、数字としての比較は -eq を使う必要があります。
[ 3 -eq 03 ] は真ですが、[ 3 == 03 ] は偽です。
>条件式はif文、それ以外で違ったりしてくるんでしょうか?
これら演算子はシェルの組み込みコマンド test (別名 [ …… 昔は組み込みコマンドでなかったので外部コマンド /bin/test だった) の演算子なので、if で使おうが、 while で使おうが、それ以外で [ 3 -eq 03 ] && date のように使おうが同じです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBA エクセル 条件の設定 1 2022/03/28 10:24
- Excel(エクセル) マクロ、条件付き書式のfont.color 1 2023/03/28 01:10
- Visual Basic(VBA) excel VBA if文について 3 2022/03/27 17:42
- その他(IT・Webサービス) ホームページにカウント数を表示する 2 2022/10/28 10:37
- Excel(エクセル) Excelで、別シートの表のステータスに伴った動的な自動転記をしたいです。 2 2023/06/14 15:56
- Visual Basic(VBA) 別シートから年齢別の件数をカウントしたいの続き 5 2023/01/24 00:16
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
- Visual Basic(VBA) VBA初心者です。 VBAで行単位で条件付き書式の色をカウントしたいです。 大量のデータがあるExc 3 2022/06/08 10:02
- Visual Basic(VBA) VBA初心者です。 VBAで行単位で条件付き書式の色をカウントしたいです。 大量のデータがあるExc 3 2022/06/08 10:00
- Visual Basic(VBA) 【前回の続き続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/24 20:49
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
batである文字列内に特定の文字...
-
シェルからのストアド起動
-
【シェルスクリプト】whileルー...
-
ファイルから文字列を読み込む...
-
Cシェルプログラムで、あるディ...
-
シェルスクリプトの変数の制限?
-
スクリプト中のexportコマンド...
-
rubyで、バッククォートの中に...
-
Dirコマンドでフォルダ内ファイ...
-
エクセルの表にヘンな枠が・・・
-
ラズパイで『’test.service’をs...
-
ファイル名についている「-」と...
-
TOPコマンドで表示するCPU使用...
-
UNIX コマンドにおける # や円...
-
ワイルドカードを使ってでフォ...
-
Linux環境 grepで改行コード(CR...
-
topコマンドで表示されるVIRT、...
-
net use /d の強制実行
-
お気に入りの処理について。
-
pingは正常なのにtracerouteで...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
batである文字列内に特定の文字...
-
シェルスクリプトでうるう年判定
-
シェルスクリプトの変数の制限?
-
if文について
-
スクリプト中のexportコマンド...
-
bashスクリプト
-
ファイルから文字列を読み込む...
-
cshの条件式について教えてくだ...
-
【sh】tee コマンドの代替方法
-
Bシェル 文字列に含まれる特...
-
シェルスクリプトのパス
-
Cシェルプログラムで、あるディ...
-
UWSCについて
-
shellスクリプトから別のshell...
-
【シェルスクリプト】whileルー...
-
【シェルスクリプト】 for文で...
-
kshでのNULLの比較
-
【バッチ】shからOracleに接続
-
シェルで and/or の優先順位に...
-
Cシェルにあるコマンドの代わり
おすすめ情報