web-dev-qa-db-ja.com

bashは、最大2桁の正規表現番号を取得します

最大2桁の数字を受け入れる正規表現の作成方法を知っている必要があります

私が今持っているのは

^[0-9]{2}$

これは正確に2桁の数字と一致しますが、「2桁までの数字と一致する」を指定する方法がわかりません。

また、この数値が0でないことを確認する方法がある場合は、それはプラスになります。そうでない場合は、Bashで確認できます。

ありがとう! :)

入力変数はread-p "make achoice"から来ることに注意してください。

私の編集POST-コンテキストでコードを表示:

while true; do
    read -p "Please key in the number of the engineer of your choice, or leave empty to select them all: " Engineer
    if [ -z "$Engineer" ]; then
        echo "No particular user specified, all engineers will be selected."
        UserIdSqlString="Transactions.Creator!=0 "
        break
    else
        if [[ $Engineer =~ ^[0-9]{1,2}$ && $Engineer -ne 0 ]]; then
            echo "If you want a specific engineer type their number otherwise leave blank"  
        else
            echo "yes"
            break
        fi
    fi
done
9
Bluz

bash [[ 条件式は、拡張正規表現をサポートします。

[[ $number =~ ^[0-9]{,2}$ && $number -ne 0 ]]

または、他に類を見ない@gniourf_gniourfがコメントで指摘しているように、先行ゼロのある数値を正しく処理するには、次のものが必要です。

[[ $number =~ ^[0-9]{,2}$ ]] && ((number=10#$number))
8
iruvar

-_-これを20分間探していて、投稿した直後に答えが見つかりました... ^ [0-9] {1,2} $

6
Bluz
^([1-9]|[1-9]{1}[0-9]{1})$

1,2,3 ... 99からのすべての番号に一致します

#!/bin/bash
if [ "$1" -gt 0 ] 2>/dev/null ;then 
    echo "$1 is number." 
else 
    echo 'no.' 
fi 
0
Jagger Yu