【发布时间】:2018-04-05 18:30:53
【问题描述】:
我试过了,但它不起作用。
if [ $char -eq " " -o $char -eq "" -o $char -eq " " ]
【问题讨论】:
-
你想用这个比较做什么。您是否要从文件中的行中删除空格?
-
不,我只是想跳过它们
我试过了,但它不起作用。
if [ $char -eq " " -o $char -eq "" -o $char -eq " " ]
【问题讨论】:
-eq 用于数字。此外,您应该将变量括在引号中,例如“$char”,而不是 $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
【讨论】:
这适用于单字符变量 $char,但请注意,该帖子主要假设多字符变量。
用途:
if grep -q '\s' <<< "$char"; then ...
【讨论】:
-eq 对于数值,对于字符串,使用 ==
if [[ $char == " " || -z $char || $char == " " ]]; then
最近 bash 的正则表达式替代(0 或 1 个空格或 3 个空格):
if [[ $char =~ ^\ {0,1}$ || $char =~ ^\ {3}$ ]] ; then
\ : 空格[[:blank:]]:空格,制表符[[:space:]]:空格、制表符、换行符、垂直制表符、换页、回车if [[ $char =~ ^\ {0,3}$ ]] ; then
【讨论】:
在 bash 中,您可以在 [[]] 中使用正则表达式匹配
if [[ $char =~ [[:space:]] ]]
如果你真的想匹配单个空白字符
if [[ $char =~ ^[[:space:]]$ ]]
或者一个空格或者什么都没有
if [[ $char =~ ^[[:space:]]?$ ]]
或者字符串中只有空格
if [[ $char =~ ^[[:space:]]+$ ]]
或者只有空格或者什么都没有
if [[ $char =~ ^[[:space:]]*$ ]]
【讨论】:
char='a a' matches...
[[:space:]] 是空格的字符类。请注意,问题中的代码正是 OP 尝试过的,不一定正是他们想要的。