我正在编写一个 bash 脚本并使用大小写逻辑来检测我的 $message 是否具有非空格字符,但我也想检测非换行符。有时我的脚本中的 $message 变量等于换行符,有时会返回 true。
如何组合非空格和非换行条件?
像这样?[!\ !\n]
这是我到目前为止所拥有的:
7 case $message in
8 *[!\ ]*) # contains non-space
9 messagex='``` '"$message"' ```' ;;
10 *) # contains nothing or only spaces
11 messagex=
12 esac
答案1
case $message in
(*[!'
']*) : contains characters other space and newline
esac
或者:
case $message in
(*[!"$(printf '\n ')"]*) : contains characters other space and newline
esac
或者使用 ksh93 样式的$'...'
特殊引号(不在 中sh
):
case $message in
(*[!$' \n']*) : contains characters other space and newline
esac
或者您可以使用[:space:]
POSIX 字符类来匹配任何空格,包括 TAB、SPC、CR、NL...
case $message in
(*[![:space:]]*) : contains non-whitespace characters
esac