引数の 1 つとしてf
文字列値を取るBash functionがあります。s
s
の間の整数でない場合は、実行を中止する必要があり[1000-9999]
ます。
最初は、文字列を int にキャストし、結果に対して算術範囲チェックを実行して、エラーが発生した場合に中止しようと考えていましたが、他のすべてのパラメーターは RegEx を使用してチェックされるため、一貫性が保たれる可能性があります。実際、私はしなければなりません。
バッシュのバージョン: 4+
これより見栄えの良いパターンを思い付くことができませんでした。
[[ "$s" =~ [[:\<:]][[:digit:]]{4}[[:\>:]] ]]
上記のパターンチェック構造の可読性を改善するのを手伝ってもらえますか?
上記のパターンで特に嫌いなのは、次のとおりです。
<
バックスラッシュで単語境界文字をエスケープする必要があります[[:\<:]]
- それの長さ、そして非常識な数の角括弧
私が持っていた 1 つのアイデアは、ハックですが、フルラインの境界チェックを使用することでした。(つまり、\b...\b ではなく ^...$ を使用)
オプションで:: Bash での引数検証のためのかなり確立されたパターンはありますか?