bashでのみ変数に数値が含まれていることを確認する構文

bashでのみ変数に数値が含まれていることを確認する構文

私のコンピュータで古いスクリプトを見ている間、私はこのif表現を見ましたが、それが何をしているのかわかりませんでした。誰かがこれを説明できますか?

if ! [[ "${count// /}" =~ ^[0-9]+$ ]]
then
  echo 1
else
  echo $count
fi

値はcount文字列の場合もあり、整数の場合もあります。

ベストアンサー1

それをコンポーネントに分けましょう。

  1. この構文は、"${count// /}"変数の内容のすべてのスペースを空の文字列に置き換えるパラメータ拡張構文です。たとえば2 121
  2. この部分は正規表現操作を=~ ^[0-9]+$実行し、bash左の文字列を数値セットに一致させます。ただ
  3. この部分は全体の操作を無効にします。つまり! [[..]]countいいえ一連の数字。
  4. 数値を出力してif失敗した場合は、1)のスペースを削除せずに実際の値を返します。echo1ifcount

おすすめ記事