web-dev-qa-db-ja.com

Mac端末ではX = x + 1

Xにx + 1の値を割り当てるにはどうすればよいですか?私は他の言語でそれを行うことができますが、bashでそれを理解することはできません。

2
JShoe

私はちょうど2つの異なる方法をテストし、両方とも私のために働きました:

x=$((x+1))

...または...

x=$((++x))
7
Bandit

これでうまくいくはずです

let x=$x+1
3
freethinker

これはうまくいくかもしれません:

x = `expr $x + 1`
1
Xenoactive

@Banditの答えは問題ありませんが、「let」と(())が通常のシェル構文に与える違いを強調したいと思います。

let x++

bash(またはksh、または任意のPOSIXシェル)に、式を「算術評価」として処理させます。この場合、参照される変数の前に「$」を付ける必要はありません。 (())を使用する利点の1つは、それ以外の場合、特別なトークンを引用符で囲んだりエスケープしたりする必要がないことです。次のような乗算の「*」:

(( x = x * 2 ))

この構文は、式の出力を使用する$(())よりも少し明確です。

x=$(( x * 2 ))
0
Phil