我正在编写一个 Linuxtcsh
脚本来检查命令参数的语法,以确保在命令执行之前其正确。
在我在脚本中保存为变量的 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 之间的字母或数字