如何检测 bash 案例逻辑中的换行符和非空格字符?

如何检测 bash 案例逻辑中的换行符和非空格字符?

我正在编写一个 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

相关内容