if then の正しい形式は何ですか?
いろいろ試してみました。
プログラム内ではなくコマンド ラインでこの形式は機能するのでしょうか?
$ if [1==2] then echo "y" fi;
> ;
-bash: syntax error near unexpected token `;'
答え1
まだ誰もそのエラーを説明していません。
あなたが入りました:
if [1==2] then echo "y" fi;
;
最初の行は、シェルに関する限り完全に有効な構文でした。次の形式です。
if cmd args
この場合、cmd
は glob の展開から派生します[1==2]
。は、名前が、、 の[1==2]
いずれかの文字で構成される現在のディレクトリ内のファイルのリストに展開される globbing パターンです。1
=
2
たとえば、2
現在のディレクトリに というファイルがある場合、次のようになります。
2 の場合は echo fi;
つまり、ステートメントの部分の最初のコマンドとして、、、2
の 4 つの引数を指定してコマンドを実行します。2
then
echo
fi
if
if/then/elif/else/fi
エラーは 2 行目の 2 番目から発生します。コマンド ラインに;
2 番目だけを入力すると、同じエラー メッセージが表示されるはずです。はコマンドを区切るために使用する必要があり、このように単独で使用することはできません。;
;
答え2
bash構文の正しい形式if
は
if something; then command; fi
あなたがしようとしていることの正しい形は
if [ 2 -eq 2 ]; then echo "y"; fi;
bash ではスペースが重要です。
答え3
これを試してみてください:
if [ 1 == 2 ]; then echo "y" ; fi
-eq
1 と 2 を文字列として比較する場合を除き、を使用する方が適切です。
答え4
この==
演算子は Bash には存在しません。-eq
数値を比較する場合、または=
文字列を比較する場合に使用されます。
if [ 1 -eq 2 ]; then echo 'y'; fi