shell 如何判断是不是为一串连续字符

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了shell 如何判断是不是为一串连续字符相关的知识,希望对你有一定的参考价值。

参考技术A 用“-z字符串”判断。
用该语句判断字符串是否为空(为空返回真),格式是(选项字符串)或者(字符串选项字符串)。
shell是指提供使用者使用界面的软件(命令解析器)。它类似于DOS下的command和后来的cmd。它接收用户命令,然后调用相应的应用程序。

Linux Shell正则表达式如何匹配1~3位数字

一开始我考虑用 grep '[0-9]\1,3\',判断结果为空来检查是否符合要求。
后来发现只要有一位数字就能通过检查,数字与字母、特殊字符等混合的情况没法筛除,如0a,#22, 4b;等。
求教高人,要求:只能是1~3位的数字,且012,002等不被接受(即不能以0开头)。先谢过!
判断的是一个变量,不是文件中的字符流。$符号表示文件结尾,应该不能用吧。
------------------------------------------
jlake老兄,多谢,可以了。看来$符号还是需要的。
var=123
test=`echo $var | grep '^[0-9]\1,3\$' | grep '^[1-9]'`
if [ "$test" -eq "" ]; then
echo "Invalid data!"
fi

参考技术A grep '^[0-9]\1,3\$' test.txt | grep '^[1-9]'

如果是变量

echo $var | grep '^[0-9]\1,3\$' | grep '^[1-9]'

$表示行尾

这个正则不匹配 12a 这样的字符串

你的变量内容是什么样的?

我用来测试的 test.txt 的内容:
123
321
123212
001
010
100
10000
0011
10101
1101
1
2
3
11
22
33
1a
2a本回答被提问者采纳
参考技术B lx@LxUbuntu:~/bash/tmp$ cat 123
123
321
123212
001
010
100
10000
0011
10101
1101
lx@LxUbuntu:~/bash/tmp$ sed -n '/^[1-9][0-9].$/p' 123
123
321
100

这样可以吗?

以上是关于shell 如何判断是不是为一串连续字符的主要内容,如果未能解决你的问题,请参考以下文章

如何判断 c 函数 atoi 是不是失败或是不是是一串零?

如何在shell中判断A字符串中是不是包含B字符串

shell如何判断两个含特殊字符的字符串变量是不是相等

shell如何比较 两个字符串是不是相等?

shell中如何比较两字符串是不是相等

如何判断字符串是不是未在 Bash shell 脚本中定义