리눅스 tcsh 스크립트 문제

리눅스 tcsh 스크립트 문제

tcsh명령이 실행되기 전에 명령 인수의 구문이 올바른지 확인하기 위해 Linux 스크립트를 작성하고 있습니다 .
스크립트에 변수로 저장한 9개 필드 중 7개를 확인할 수 있습니다. 나는 두 개만 남았고 둘 다 같은 문제로 나를 당황하게 만듭니다.
첫 번째는 "tco14" 또는 "tc14a"를 확인하는 것입니다. 이는 스크립트 확인에 필요한 동일한 필드의 두 가지 예입니다.
이전 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
  • 두 번째 위치 = c
  • 세 번째 숫자 = 0-9 사이의 숫자
  • 네 번째 위치 = 0-9 사이의 숫자
  • 다섯 번째 숫자 = 0-9 사이의 문자 또는 숫자

관련 정보