使用awk调用函数和命令

时间:2014-11-14 18:34:00

标签: linux bash function awk

嗨,这个脚本工作正常,它在根

下运行cronjob时调用该函数
usage ()
{
# Print usage
       echo "usage function"
}
#

export -f usage
ps -ef | awk '{if ($0 ~ /crond/ && $1 == "root") {system("/usr/bin/env bash -c usage") }}'

然而,除了调用函数我还想打印$ 2或者只是调用第二个命令。我无法正确理解语法。请有人帮忙吗。简而言之,在满足条件时如何运行多个命令?在上面的例子中,除了运行usage()函数之外,我还想运行第二个函数并打印$ 2(这是进程ID)。提前感谢你们

2 个答案:

答案 0 :(得分:2)

对于Bash,您可以使用;&&将命令链接起来。

;用于分隔命令,但不检查上一个命令的错误代码。例如dddate; echo 'hi'即使" dddate"可能会返回错误。

如果上一个命令没有抛出错误,

&&将只运行后一个命令。例如由于dddate && echo 'hi'失败,echo将无法运行dddate命令。

根据您的使用情况,您可以:

system("/usr/bin/env bash -c usage")加入system("/usr/bin/env bash -c usage); print $2"

root@debian:~# ps -ef | awk '{if ($0 ~ /crond/ && $1 == "root") {system("/usr/bin/env bash -c usage"); print "hi"}}'
usage function
hi

答案 1 :(得分:1)

尝试运行以分号分隔的多个命令

例如:

ps -ef | awk '{if ($0 ~ /crond/ && $1 == "root") {system("/usr/bin/env bash -c usage"); system("/usr/bin/env bash -c func2"); print $2 }}'