Bashで文字列を整数に変換する

Abdul Mateen 2023年6月20日
  1. 文字列の数学演算
  2. expr コマンドを使用して文字列を整数に変換する
  3. 二重括弧 ((...)) コンストラクトを使用して文字列を整数に変換する
  4. Basic Calculator (bc) コマンドを使用して文字列を整数に変換する
  5. awk コマンドを使用して文字列を整数に変換する
  6. perl...print または perl...say を使用して文字列を整数に変換する
  7. Python を使用して文字列を整数に変換する
Bashで文字列を整数に変換する

このチュートリアルでは、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_value4 に設定します。 この構造を使用して、必要な結果を得ることができます。

スクリプトの例を見てみましょう。

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 になります。ここで、xyawk コマンドが受け取る 2つのパラメーターです。 それに応じて計算が実行されます。

perl...print または perl...say を使用して文字列を整数に変換する

perl コマンドには print または say オプションがあります。 printsay の違いは、print は改行せず、次の出力が同じ行に出力されるのに対し、say コマンドは改行することです。

例えば:

x_value = 5
perl -E "print $x_value"
echo "*"
perl -E "say $x_value"
echo "*"

出力は次のようになります。

5*5
*

print ではなく say による改行のため、2 番目のアスタリスクが次の行に出力されることに注意してください。

したがって、perlprint または 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つの異なる方法を紹介しましたが、お好みで誰でも使用できます。

関連記事 - Bash String