如何在awk中运行shell命令

Ana*_*han 3 shell awk pwd

我试图从 A 路径更改为 B 路径时的目录,如下所示

pwd|awk '{if($1=="/") cd /tmp/}'
awk: syntax error near line 1
awk: illegal statement near line 1
Run Code Online (Sandbox Code Playgroud)

请建议

rus*_*ord 5

您可以使用system()inawk来运行任何命令,但不能使用它来更改目录,因为它在子 shell 中运行该命令,因此您将在子 shell 中更改目录,该子 shell 将立即退出。命令如下:

pwd|awk '$0 == "/"{system("cd /tmp")}'
Run Code Online (Sandbox Code Playgroud)

但正如我所说,这是行不通的。如果您echo在命令前面添加,您可以看到它实际上也在您期望的时候运行:

$ cd /
$ pwd|awk '$0 == "/"{system("echo cd /tmp")}'
cd /tmp
$ cd /home
$ pwd|awk '$0 == "/"{system("echo cd /tmp")}'
Run Code Online (Sandbox Code Playgroud)

我认为最好只使用和if声明:

if [ "${PWD}" = '/' ];then 
  cd /tmp
fi
Run Code Online (Sandbox Code Playgroud)