99. 系统函数
您可以使用系统内置函数来执行系统命令。请注意,双向通信和系统命令之间存在差异。
在 |&
中,您可以将任何 awk 命令的输出作为输入传递给外部命令,并且您可以在 awk 程序中接收外部命令的输出(基本上是双向通信)。
使用系统命令,您可以传递任何字符串作为参数,它将完全按照操作系统命令行中给出的方式执行,并返回输出(这与双向通信不同)。
以下是从 awk 调用 pwd
和 date
命令的一些简单示例:
$ awk 'BEGIN { system("pwd") }'
/home/ramesh
$ awk 'BEGIN { system("date") }'
Sat Mar 5 09:19:47 PST 2011
当您执行一个长 awk 程序时,您可能希望它在程序启动和结束时发送电子邮件。
以下示例显示如何在 BEGIN
和 END
块中使用系统命令在开始和完成时向您发送电子邮件。
$ cat system.awk
BEGIN {
system("echo 'Started' | mail -s 'Program system.awk started..' [email protected]");
}
{
split($2,quantity,",");
total=0;
for (x in quantity)
total=total+quantity[x];
print "Item", $1, ":", total, "quantities sold";
}
END {
system("echo 'Completed' | mail -s 'Program system.awk completed..' [email protected]");
}
$ awk -f system.awk items-sold.txt
Item 101 : 2 quantities sold
Item 102 : 0 quantities sold
Item 103 : 10 quantities sold
Item 104 : 2 quantities sold
Item 105 : 10 quantities sold