嗨,这个脚本工作正常,它在根
下运行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)。提前感谢你们
答案 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 }}'