Bashで文字列を整数に変換する
- 文字列の数学演算
-
expr
コマンドを使用して文字列を整数に変換する -
二重括弧
((...))
コンストラクトを使用して文字列を整数に変換する -
Basic Calculator (
bc
) コマンドを使用して文字列を整数に変換する -
awk
コマンドを使用して文字列を整数に変換する -
perl...print
またはperl...say
を使用して文字列を整数に変換する - Python を使用して文字列を整数に変換する
このチュートリアルでは、Bash スクリプトでの文字列から整数への変換について説明します。 最初に、文字列に対する数学演算の問題について説明し、次に文字列を整数に変換する方法について説明します。
文字列の数学演算
この簡単なコードから議論を始めましょう:
x_value=1000
y_value=20
echo $x_value+$y_value
このコードの出力は予期しないものである可能性があります。 出力を参照してください:
1000+20
コマンド echo
は変数 x_value
の値をプラス記号と変数 y_value
で連結します。 おそらく、あなたはこの出力を取得することに興味がありませんでした。 むしろ、出力として 1020
を期待していました。
問題について話し合った後、それを回避して目的の出力を得る方法を探りましょう。
expr
コマンドを使用して文字列を整数に変換する
このコマンドは、式を評価して結果を取得するために使用されます。 例えば:
$ expr 12 - 8
このコマンドの出力は 4
になります。 このコマンドを使用して、必要な結果を取得できます。
x_value=1000
y_value=20
expr $x_value + $y_value
このスクリプトの出力は 1020
です。 ただし、変数と演算子の間にはスペースが必要であることに注意してください。 それ以外の場合、このコマンドは連結も実行し、結果は同じになります。
注: オペランドと演算子の間に適切なスペースを追加することは必須です。
expr
が各トークンを個別に認識しやすくなります。
二重括弧 ((...))
コンストラクトを使用して文字列を整数に変換する
二重括弧コンストラクター (( ... ))
は、算術展開と評価を許可します。 たとえば、x_value=$(( 6 - 2 ))
は x_value
を 4
に設定します。 この構造を使用して、必要な結果を得ることができます。
スクリプトの例を見てみましょう。
x_value=1000
y_value=20
echo $(( x_value * y_value ))
このスクリプトの出力は 20000
になります。
Basic Calculator (bc
) コマンドを使用して文字列を整数に変換する
Bash では、基本的な計算機 (bc
) を使用して、基本的な算術計算を Bash コマンド インターフェイスから直接実行します。
たとえば、次のように記述できます。
$ echo "12-4" | bc
出力は 8
です。 この基本的な計算機を使用して、必要な結果を得ることができます。
bc
を使用して元の問題を解決するコードは次のようになります。
x_value=1000
y_value=20
echo $x_value-$y_value | bc
出力は 980
です。 この式では、expr
コマンドで必須であったように、スペースは必要ありません。
awk
コマンドを使用して文字列を整数に変換する
awk
は、ユーザーが変数、数値関数、文字列関数、および論理演算子を含む書式設定された式を出力できるようにする、コンパイル済みのコマンドです。 このコマンドはさまざまな方法で使用できます。
たとえば、フォーマットされた数値計算を含むメッセージを出力したい場合、次のように awk
コマンドとともに echo
コマンドを使用できます。
$ echo salary= 40000 10 | awk '{print $1 $2+$2*$3/100}'
このコマンドでは、給与に 10% のボーナスが含まれている場合、給与を出力します。 ここで、salary=
が最初のパラメーターです。 $1
と書いて使用しています。
同様に、40000
は $2
を書き込むことによって使用される 2 番目のパラメータです。 同様に、$3
は 3 番目のパラメータ (つまり、10
) のプレースホルダーです。
このコマンドの出力は次のとおりです。
salary=44000
awk
コマンドを使用して、元の問題を次のように解決できます。
x_value=1000
y_value=20
echo $x_value $y_value | awk '{print $1 + $2}'
出力は 1020
になります。ここで、x
と y
は awk
コマンドが受け取る 2つのパラメーターです。 それに応じて計算が実行されます。
perl...print
または perl...say
を使用して文字列を整数に変換する
perl
コマンドには print
または say
オプションがあります。 print
と say
の違いは、print
は改行せず、次の出力が同じ行に出力されるのに対し、say
コマンドは改行することです。
例えば:
x_value = 5
perl -E "print $x_value"
echo "*"
perl -E "say $x_value"
echo "*"
出力は次のようになります。
5*5
*
print
ではなく say
による改行のため、2 番目のアスタリスクが次の行に出力されることに注意してください。
したがって、perl
を print
または say
とともに使用して、必要な出力を取得できます。
x_value=1000
y_value=20
perl -E "print $x_value+$y_value"
出力は 1020
になります。
Python を使用して文字列を整数に変換する
Python には、式を評価して出力できる print
ステートメントがあります。
例えば:
python -c "print 5 * 4"
出力は 20
になります。 これを使用して、必要な結果を得ることができます。
コードを以下に示します。
x_value=1000
y_value=20
python -c "print $x_value * $y_value"
出力は 20000
です。
文字列を整数変数に変換して数学演算を実行するには、さまざまな方法があります。 ここでは、6つの異なる方法を紹介しましたが、お好みで誰でも使用できます。