T. *_*eed 1 regex macos bash grep
我已经在这里和其他地方看到了很多问题的答案,这些问题说你可以通过回显变量和管道来grep来对变量进行grep搜索.但是,遵循这些示例的语法对我不起作用.
以下代码失败,每次都回显"发现",无论我正在搜索什么字符串grep.我究竟做错了什么?
TEST='This is a test of the emergency broadcast system.'
echo $TEST | grep 'blah'
if [ $? -eq 0 ]
then
echo 'not found'
else
echo 'found'
fi
Run Code Online (Sandbox Code Playgroud)
你的支票应该是相反的.
来自man grep:
EXIT STATUS
The exit status is 0 if selected lines are found, and 1 if not found.
If an error occurred the exit status is 2. (Note: POSIX error handling
code should check for '2' or greater.)
Run Code Online (Sandbox Code Playgroud)
看一个例子:
$ echo "hello" | grep h
hello
$ echo $?
0
$ echo "hello" | grep t
$ echo $?
1
Run Code Online (Sandbox Code Playgroud)
但是,最好使用Bash工具:
[[ $TEST =~ *blah* ]] && echo "found" || echo "not found"
Run Code Online (Sandbox Code Playgroud)