
では、正しい形式は何ですか?
私は多くの種類を試してみました。
この形式はプログラムではなくコマンドラインでも機能する必要がありますか?
$ if [1==2] then echo "y" fi;
> ;
-bash: syntax error near unexpected token `;'
答え1
まだ誰もこのエラーを説明していません。
あなたはログインしています:
if [1==2] then echo "y" fi;
;
最初の行は、シェルに関する限り、完全に有効な構文です。その形式は次のとおりです。
if cmd args
この場合はglobcmd
の拡張です[1==2]
。[1==2]
名前または文字で構成されている現在のディレクトリのファイルのリストに展開されるワイルドカードパターン。1
=
2
たとえば、2
現在のディレクトリにファイルがある場合は、次のようになります。
2の場合、fiを返します。
つまり、ステートメントセクションの最初のコマンドとして、およびの42
つのパラメータを使用してコマンドを実行します。2
then
echo
fi
if
if/then/elif/else/fi
エラーは;
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を文字列で比較したい場合を除き、使用するのが最善です。
便利なリンク:http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_07_01.html
答え4
==
この演算子は Bash には存在しません。-eq
数値を比較するときや文字列を比較するときです=
。
if [ 1 -eq 2 ]; then echo 'y'; fi