我正試圖在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