Bash / Awk:如何使用bash或awk运行命令

时间:2011-06-08 22:05:44

标签: bash awk

如何在bash中运行命令,读取它返回的输出并检查其中是否有文本“xyz”以决定是否运行另一个命令?

容易吗?

由于

5 个答案:

答案 0 :(得分:7)

if COMMAND | grep -q xyz; then
    #do something
fi
编辑:安静。

答案 1 :(得分:1)

例如:

command1 | grep "xyz" >/dev/null 2>&1 && command2
  • 运行command1
  • 使用grep
  • 输出文件管理器
  • 丢弃grep的输出
  • 如果grep成功(那么找到字符串)
  • 执行command2

答案 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

我希望这会有所帮助。