0
これは私の現在のシェルスクリプトにあります。私は正規表現でかなり悪いです。ダッシュ付きの文字と数字に正規表現を使用する方法
echo $1 | grep -E '^[A-Z]${3}|^[0-9]${4}|^[ABCD]$'
私はこのように私の入力が必要になります。
./dlchek.sh ACV-1319-A
これは一般的な形式です:XYXは、任意の文字を表します1111は任意の番号にすることができ、そしてAはありXYX-1111から (A、B、C、D)のいずれかになります。私は途中でUNIXを使用しています。私は、フォーマットが正しいかどうかをチェックし、正しい場合はコード0で、正しくない場合は1で終了する必要があります。
これは予想される出力です.3行目のみがフォーマットに従ったために動作しました。
[[email protected] final]$ ./dlcheck.sh ACV-13-A
[[email protected] final]$ echo $?
1
[[email protected] final]$ ./dlcheck.sh ACV-13119-A
[[email protected] final]$ echo $?
1
[[email protected] final]$ ./dlcheck.sh ACV-1319-A
[[email protected] final]$ echo $?
0
[[email protected] final]$ ./dlcheck.sh ACV-1319-Y
[[email protected] final]$ echo $?
1
すばらしい応答ありがとう。私はregex101で試してみましたが、動作しましたが、私の.shで動作しました。これは私が今持っているものです:grep -E '^ [A-Z] {3} - [0-9] {4} - [ABCD] $' –
はパターンですか? –
はい、これまで確認したのはこれだけです。私は出口コードとループを追加して、これを把握します。私は実際にそれを変数に設定しました。これは基本的に次のようになります:x = 'echo $ 1 | grep -E '^ [AZ] {3} - [0-9] {4} - [ABCD] $' 'エコー$ xが一致するかどうかを調べる –