如何在bash中运行命令,读取它返回的输出并检查其中是否有文本“xyz”以决定是否运行另一个命令?
容易吗?
由于
答案 0 :(得分:7)
if COMMAND | grep -q xyz; then
#do something
fi
编辑:安静。
答案 1 :(得分:1)
例如:
command1 | grep "xyz" >/dev/null 2>&1 && command2
command1
答案 2 :(得分:0)
您可以将命令的输出传递给grep或grep -e。
答案 3 :(得分:0)
虽然你可以通过许多不同的方式完成这项任务,但这对于awk来说是一个完美的用途。
prv cmd | awk '/xyx/ {print "cmd" } ' | bash
这就是你想要的
例如,
我有一个名为temp.txt的文本文件,只包含'xyz'
如果我运行以下命令,我将输出“找到它”
输出$ cat temp.txt | awk '/xyz/ {print "echo found it"}' | bash
> found it
所以我正在做的是将我之前命令的输出传递给awk,他正在寻找模式xyz(/ xyz /)。 awk将打印命令,在这种情况下echo发现它,并将其传递给bash以执行它们。简单的单行做你问的问题。请注意,您可以自定义awk查找的正则表达式。
答案 4 :(得分:0)
您的规格非常宽松,但尝试尝试
output="$(cmd args ....)"
case "${output}" in
*targetText* ) otherCommand args ... ;;
*target2Text* ) other2Command ... ;;
esac
我希望这会有所帮助。