我试过这个,但它不起作用。
if [ $char -eq " " -o $char -eq "" -o $char -eq " " ]
答案 0 :(得分:1)
这适用于单个char变量$ char,但请注意,该帖子主要假定一个多字符变量。
使用:
if grep -q '\s' <<< "$char"; then ...
答案 1 :(得分:1)
-eq用于数字。此外,您应该将变量括在引号中,例如&#34; $ char&#34;,而不是$ char
#! /bin/sh
A=1
B=" "
if [ "$A" -eq 1 ]; then
echo "eq is for numeric"
fi
if [ "$B" = " " ]; then
echo "= is for characters"
fi
答案 2 :(得分:0)
-eq表示数值,对于字符串,请使用==
if [[ $char == " " || -z $char || $char == " " ]]; then
使用最近bash(0或1个空格或3个空格)的正则表达式替换:
if [[ $char =~ ^\ {0,1}$ || $char =~ ^\ {3}$ ]] ; then
\
:仅限空格[[:blank:]]
:space,tab [[:space:]]
:空格,制表符,换行符,垂直制表符,换页符,回车款if [[ $char =~ ^\ {0,3}$ ]] ; then
答案 3 :(得分:0)
在bash中,您可以在[[]]
if [[ $char =~ [[:space:]] ]]
如果您确实想要匹配单个空格字符
if [[ $char =~ ^[[:space:]]$ ]]
或单个空格或无空白
if [[ $char =~ ^[[:space:]]?$ ]]
或只是字符串中的空格
if [[ $char =~ ^[[:space:]]+$ ]]
或者只有空格或什么都没有
if [[ $char =~ ^[[:space:]]*$ ]]