为什么用!符号然后逃避它?

时间:2017-01-27 07:30:43

标签: bash shell unix

#!/bin/sh
echo "Enter a name"
read name
    case "$name" in
            *[!\ a-zA-Z]*)  echo "Can contain only alphabets" >/dev/tty
            continue;;
            *) echo "Good entry" ;;
    esac

1 个答案:

答案 0 :(得分:1)

这个表达式:

*[!\ a-zA-Z]*

开头有!,它会对[...]内的所有字符或范围进行否定。在这种情况下,它意味着任何

  • 不是空格
  • 不在a-z
  • 的范围内
  • 不在A-Z
  • 的范围内

另请注意,转义适用于\旁边的空格,而不是之前的! ,以避免分词。