Linuxではすべてがファイルであるように、bashではすべてが文字列です。
はい!技術的には、Bashにはデータ型はありません。基本的に、Bash変数は単なる文字列です。
そして、bashで算術演算を実行しようとすると、問題が発生します。追加しようとする数字は奇妙な結果をもたらします。
[email protected]:~$ sum=3+6
[email protected]:~$ echo $sum
3+6
文字列をbashで整数に変換するには、それらを$((X))でラップします。このように:
$((string))
文字列に識別可能な番号がある場合、それは番号として扱われます。上に示した例は、次のように修正できます。
[email protected]:~$ sum=$((3+6))
[email protected]:~$ echo $sum
9
$((...))内で行うことはすべて、算術演算と見なされます。 bashで算術計算を使用できるように、文字列から数値への変換をもう少し詳しく見てみましょう。
基本的に文字列であるいくつかの「数字」を宣言しましょう。
[email protected]:~$ a=11
[email protected]:~$ b=3
割り当てられた番号を確認できます:
[email protected]:~$ echo $a
11
[email protected]:~$ echo $b
3
次に、両方の数値を加算して、値を3番目の変数c
に格納してみましょう。 :
[email protected]:~$ c=$a+$b
[email protected]:~$ echo $c
11+3
上記の出力でわかるように、cも文字列として扱われています。
加算を成功させるには、算術展開によって加算を「変換」する必要があります。
[email protected]:~$ c=$(($a+$b))
[email protected]:~$ echo $c
14
c
に注意してください 後で説明する別の操作で同じ算術展開を暗黙的に再度使用するまでは、実際には文字列です。
[email protected]:~$ c=$((5))
上記は次と同等です:
[email protected]:~$ c=5
3番目の変数d
を使用してみましょう 別の操作の場合:
[email protected]:~$ d=10
これらの暗黙の宣言はすべて文字列のままです。 a
を定義したのと同じです およびb
以前。
次に、2番目の操作について説明します:
[email protected]:~$ e=$(($a+$b*$c-$d))
[email protected]:~$ echo $e
16
上記の式では、bとcの積が最初に計算され、最後に加算と減算が続きます。
前に述べたように、$((...))の間で行うことはすべて、算術演算と見なされます。
この変換はすべて整数に対して機能します。浮動小数点、つまり小数点付きの数値では機能しません。文字列と整数を混合することは、コークスとミントを混合するよりも安全です。ただし、奇妙な結果が得られます。
[email protected]:~$ sum=$((3+hello))
[email protected]:~$ echo $sum
3
(文字列として)数字がある場合にのみ機能します。純粋な文字列の場合、魔法のようにいくつかの数字に変換されることはありません。代わりに、上記の例でわかるように、無視されます。
別の方法:exprを使用
expr
を使用することもできます 評価を行うためのツールですが、coreutils
が必要なため、これは「ネイティブ」のBashプロシージャではないことに注意してください。 別のパッケージとして(デフォルトではUbuntuに)インストールされます。
[email protected]:~$ expr $a + $b \* $c - $d
16
この簡単なチュートリアルが、bash文字列を数値として評価するのに役立つことを願っています。ご質問やご提案がございましたら、下にコメントを残してください。