私はbashプログラミングが初めてです。私は2つの優れた長いガイドを読みましたが、演算子とキーワードについて混乱してしまいました。
より一般的で広く使用されているのはどれですか?いつ、なぜ使用するのかわかりません。
test
、[[ ]]
または[ ]
または(( ))
$((exp))
または$[exp]
-gt
または>
、ge
または>=
など。<
および>
または( )
を使用する場合、および\:
\<
\(
などでエスケープする必要がある場合.==
または=
(文字列比較)[
と[[
の基本的な違いは知っていますが、他の質問は謎です。
前もって感謝します
test
は、(明らかに)特定の条件をテストするシェル組み込みです。一部の古いシェルには特別なコマンドが必要です。そのため、/usr/bin/test
にもプログラムがあります。[
は、何らかの条件をテストするプログラムでもあります。このソフトウェアには閉じ括弧も必要です。/usr/bin/[
で見つけることができます。[[…]]
は、test
および[
の代替です。 Kornシェル用に開発されました(ksh
)。しかし、Bashバージョンが2よりも大きい場合やZシェルでも見られます。二重括弧にはいくつかの気の利いた機能があります:-a
(AND)または-o
(OR)の代わりに、&&
または||
を使用できます。=
はさらに多くのことができます。((…))
はlet
と同等です。したがって、基本的に((expression))
はlet "expression"
と同じです。ただし、let
を使用すると、複数の式を使用できますが、二重括弧は1つの式のみを許可します。$((…))
(および$[…]
)も計算を行います。シェルは、中かっこ内の式を計算し、式を結果に置き換えます。 echo $((1+1))
はecho 2
につながります。したがって、シェルは数値2を出力します。2つの数値を比較するたびに、ダッシュと2つの文字(-ge
、-lt
など)を使用するオプションを使用する必要があります。文字列を比較する場合は、=
または!=
を使用する必要があります。
エスケープに関するあなたの質問に答えるのは非常に難しいです。シェル以外で使用するソフトウェアに依存するためです。つまり、grep
とgrep -E
は異なるエスケープが必要です。これは、sed
、awk
などにも当てはまります。したがって、最良のオプションは、マンページを確認することです。しばらくすると、慣れて、エスケープを使用するタイミングがわかります。