3

状態ファイルを使用して数値を保存すると想像してください。数値は次のように読み取られます。

COUNT=$(< /tmp/state_file)

ただし、ファイルが中断される可能性があるため、$COUNT には「数字」ではなく任意の文字が含まれる場合があります。

正規表現を使用する以外に、つまりif [[ $COUNT ~ ^[0-9]+$ ]]; then blabla; fi、それを数値 (無効な場合は 0) に変換する「atoi」関数はありますか?

編集

最後に、次のようなものを使用することにしました。

let a=$(($a+0))

または

declare -i a; a="abcd123"; echo $a # got 0

ヒントをくれたJ20に感謝します。

4

3 に答える 3

4

同等のものは必要ありませんatoi。Bash 変数は型指定されていません。算術演算でランダムな文字に設定された変数を使用しようとすると、黙って無視されます。例えば

foo1=1
foo2=bar
let foo3=foo1+foo2
echo $foo3

結果を与える1

このリファレンスを参照してください

于 2012-10-04T11:59:55.690 に答える
0

echo $COUNT | bcjurgemaisterのコメントによると、エラーが発生しやすい数字をキャストできる必要があります。

echo ${COUNT/[a-Z]*} | bcこれは正規表現の方法に似ていますが、エラーが発生しにくいです。

于 2012-10-04T12:06:01.197 に答える