
Bash マニュアル、セクション 6.5 シェル算術
expr1 , expr2
comma
コンマ演算子は何をしますか?
expr1
expr2
sumは算術式ですか?
答え1
,
リスト演算子です。
算術式のリストは左から右に評価され、最後の式の結果が戻り値になります。
$ echo "$(( a=1, ++a, ++a ))"
3
bash-2.04-develにリスト,
演算子が追加されました(事前/事後増加/減少演算子とともに)。
読みたいかもしれませんexpr.c
他の演算子の実装方法とその機能を確認してください。expcomma()
,
オペレーターのため。
答え2
吹く
コンマ演算子はLESS=+/'expr1 , expr2' man bash
bash()で動作します。
expr1, expr2
カンマ
その目的については他の説明はありません。
これを行うには、私たちは読む必要があります「C言語」(すべての算術演算子の誕生地)の説明。
はい(上記のリンクに示されています)(2番目の値は5です):
$ echo "$(( (t=3, t+2) )) $t"
5 3
またはより簡単に:
$ echo "$(( t=3, t+2 )) $t"
5 3
はい、各要素をカンマで区切ります。表現かもしれません:
1313 expression:
assignment-expression
expression , assignment-expression
POSIX
実際にPOSIXいいえコンマ演算子を含みます。
表:選択されたISO C標準演算子と制御フローキーワード
または、次のことを試してください。
$ dash -c 'echo $(( t=3,t+2 ))'
dash: 1: arithmetic expression: expecting EOF: " t=3,t+2 "
$ bash -c 'echo $(( t=3,t+2 ))'
5
IBMがレポートで確認したように、AIXおよびPOSIXシェルページ(強調):
すべての積分演算子、外の...とカンマ(、)がサポートされています。
ただし、AIX でも IBM はコンマ演算子をサポートすると主張しています。ksh93シェルから/usr/bin/ksh93
単項 +, ++, -- および ?: 構文 (例: "x ? y:z") や (カンマ) 演算子など、より多くの算術演算子を使用できます。
結論として:
dash, ksh do not have a comma operator.
ksh93 may have a comma operator.
bash, zsh do have a comma operator.