我正试图在bash脚本中的字符串开头检查正确的格式。检查bash脚本中的字符串格式
期望的格式如下,其中字符串必须始终以“ABCDEFG-”(确切字母和顺序)开头,数字会有所不同,但至少需要3位数字。第三位数字后的所有内容都不在意。 字符串的预期开始:“ABCDEFG-1234”
我正在使用下面的代码片段。
[ $(echo "$str" | grep -E "ABCDEFG-[0-9][0-9][0-9]") ] && echo "yes"
STR1 = “ABCDEFG-1234”
STR2 = “ABCDEFG-1234 - 一些文字”
当我在地方STR一切使用STR1工程确定并打印肯定。
当我在地方STR的使用STR2我得到下面的错误
[: ABCDEFG-1234: unary operator expected
我非常新的使用bash脚本所以任何帮助,将不胜感激工作。
的smalles为了让你的代码工作,只需要添加引号和'-n':'[-n“$(echo”$ str“| grep -E“ABCDEFG- [0-9] [0-9] [0-9]”)“] && echo”yes“' - 这样'grep'的输出不会被字符串分割并传递给'']'作为单独的参数,这是错误的直接原因,也就是说,当'grep'可以根据匹配是否匹配而直接发出真或假的退出状态时,这种方法是不必要的低效率和巴洛克式的,不需要对于'[]'或输出分析根本不需要任何外部工具如grep – 2014-10-03 20:27:39
(...和'-n'只在某些病例中是必需的;在一般情况下,引用就足够了) – 2014-10-03 20:29:42