コマンドは...
t=20
s=$t+30
私が望む出力ですが、echo $s
追加を実行するようにコマンドを50
書く方法がわかりません。s=
答え1
デフォルトでは、シェル変数は文字列です。一部のシェルは他の変数型をサポートしていますが、シェルにこれを知らせる必要があります。
すべてのPOSIXスタイルのシェル(sh
古代のUnixシステム、ダッシュ、bash、ksh、zshなどを除く)では、次のものを使用できます。算術拡張変数の割り当てを解析するときに算術演算を実行するようにシェルに指示します。
t=20
s=$((t+30))
echo "$s"
(ここでは二重引用符は必要ありませんが、これは成長する価値がある良い習慣です.)
評価する式のテキストを保存し、印刷時に算術演算を実行することもできます。
t=20
s=$((t+30))
echo "expression: $s; evaluated: $(($s))"
ただし、算術式で明示的な変数置換を使用するときは注意してください。算術サブ式ではなくリテラルに置き換えられるため、演算子の優先順位が奇妙に見えることがあります。
echo "$(($s*2))" # equivalent to $((t+30*2)), so prints 80, not 100
Bash、ksh、またはzshで使用できますlet
または((…))
算術演算を実行します。
t=20
let s=t+30
echo "$s"
または
((t = 20))
((s = t + 30))
echo "$s"
またはその変形。
bash、ksh、またはzshのもう1つの可能性は、以下を使用することです。typeset
変数を整数として宣言する機能が組み込まれています。その後、各割当に対して算術評価が行われる。
typeset -i s t
t=20
s=t+30
echo "$s"
答え2
1つの方法は次のとおりです。
t=20
s=$((t+30)) # or s="$((t+30))"
echo "$s"
答え3
expr
次のコマンドを使用して算術演算を実行できます。
t=20
s=$(expr "$t" + 30)
echo "$s"
詳細については、端末に入力してくださいman expr
。