我正在尝试使用一行是否包含日期作为 if 语句的条件:
if [grep -n -v '[0-9][0-9][0-9][0-9]' $line |wc -l==0]
then
...
以上返回错误。我不一定需要使用grep。grep 处理的行如下所示:
1984 Dan Marino QB Miami Dolphins
任何帮助表示赞赏。
您可以使用 bash 内置函数进行检查:
re='\b[[:digit:]]{4}\b'
if [[ $line =~ $re ]] ; then
echo ok;
fi
if [[ $(echo $line | grep -q '[0-9][0-9][0-9][0-9]') ]]; then
# do something
fi
[grep -n -v '[0-9][0-9][0-9][0-9]' $line |wc -l==0]
问题1:[(space).....(space)]
你需要那些空间
问题2:没有[ foo==bar ]
你可以做类似的事情[ $(echo "0") = "0" ]
或者 [[ $(echo "0") == 0 ]]
这里$(echo "0")
是一个例子,你应该填写你的命令。
使用命令替换和正确的 bash 语法。
[[ "`grep -n -v '[0-9][0-9][0-9][0-9]' $line | wc -l`" -eq 0 ]]
您可以使用-q
选项调用 grep 并检查返回值:
if [ $(grep -qv '[0-9][0-9][0-9][0-9]' $line) -eq 0 ]; then
# ...
fi