Linux tcshスクリプトの問題

Linux tcshスクリプトの問題

tcshコマンドが実行される前に、コマンド引数の構文が正しいことを確認するためにLinuxスクリプトを作成しています。
スクリプトに変数として保存した9つのフィールドのうち7つを確認できます。私は2つだけ残り、両方とも同じ問題で私をパニックにさせます。
まず、「tco14」または「tc14a」を確認することです。これは、スクリプトの検証に必要な同じフィールドの2つの例です。
前の2つの例は常に次のように分類されます。
「tc」は常にパラメータを開始し、次の2つの位置(1〜9の間の数字でなければなりません)、最後の位置(数字または文字のいずれか)が続きます。

Bashでは、次の行で作業しました。

# Check the seventh field
check_field "$var7" 'TC([0-9]{3}|[0-9]{2}[a-zA-Z])$' "Field 7 is not valid:" 7

スクリプトはチェックを実行するために配列を使用しますが、tcshで見つけたように、多くのbashスクリプトでは正しく機能しません。だからtcshで次のことを試しました。

# Check if field7 matches the specified format
set valid_field7 = `expr "$field7" : '^tc[0-9]\{1,3\}[a-zA-Z0-9]$'`

if ($valid_field7 == 0) then
    echo "${RED}Error: Invalid syntax for field7. Must start with 'tc' followed by 2 digits and end with a digit or a letter.${NC}"
    exit 1
endif

これはほぼうまくいきますが、tc12検査も通過するため、通過しないでください。繰り返しますが、このパラメータフィールドには3文字が必要です。最初の2文字は数字、最後は数字または文字です。より良い理解のために、次の行を参照してください。

  • 最初の位置 = t
  • 2番目の位置= c
  • 3番目の数字= 0〜9の数字
  • 4番目の位置= 0から9までの数字
  • 5 番目の数字 = 0 から 9 までの文字または数字

関連情報