检查bash中的命令是否输出了正确的动态值和字符串

时间:2017-05-18 08:30:09

标签: linux bash grep command output

我正在尝试创建一个bash脚本来检查特定命令是否输出了预期结果。输出应该是 N user(s)已导出到输出文件中。

如果N是数字

中的动态值,我应该如何检查它

我使用此代码进行检查,但这只会检查特定的字符串:

./command.sh -e | grep 'string' &> /dev/null
    if [ $? == 0 ]; then
       echo "PASS" 
    fi

1 个答案:

答案 0 :(得分:0)

使用以下 grep 命令只会从输出中获取数字结果:N user(s)

grep -oP '^[0-9]+'

示例:

echo '1 user(s)' | grep -oP '^[0-9]+'

输出:

1
echo '100 user(s)' | grep -oP '^[0-9]+'

输出:

100

请注意,输出应为N user(s),您是否有其他可能会破坏此正则表达式的情况?

更新

为了检查整个输出,你可以使用这个:

echo '1 user(s) has been exported in the output file' | grep -P '^[0-9]+\suser\(s\)\shas\sbeen\sexported\sin\sthe\soutput\sfile'

OR

echo '1 user(s) has been exported in the output file' | grep -P '^[0-9]+\suser\(s\)\s(\w|\s)+'

OR

echo '1 user(s) has been exported in the output file' | grep -P '^[0-9]+\s\w+\(\w\)(\s|\w)+'

输出:

1 user(s) has been exported in the output file