以下の最初のコマンドが機能する理由を理解できません。 exprコマンドを使用するときは*をエスケープする必要があります。私の考えでは、*はBREの一部であるため、常にエスケープする必要があり、したがって「何も」表示されないようにエスケープする必要があります。したがって、最初のコマンドが実際に機能する理由を理解できません。
$ a=2; b=3; echo $((a*b))
6
$ var1=$(expr 2 * 3) ; echo $var1
expr: syntax error: unexpected argument ‘Desktop’
$ var1=$(expr 2 \* 3) ; echo $var1
6
ベストアンサー1
使用するとき算術拡張
式は二重引用符内と同じ拡張を行います。
ただし、expr(1)を使用すると、すべてがコマンドライン引数として渡されるため、すべての一般的な制約が適用されます。シェル拡張含むファイル名拡張子(現実的でなければならないので、正規表現の代わりにワイルドカードを使用します。)
これは…expr のマニュアルページ
シェルで使用するには、多くの演算子をエスケープまたは引用する必要があります。