awk 在脚本中更改工作目录

sta*_*tic 3 unix bash awk system pwd

我想在 awk 脚本中更改工作目录:

  ...
  path="./some/path"
  system("pwd") ; \
  current_dir=system("pwd") ; \
  pushd_cmd="pushd " path ; \    # a "cd" doesn't work too
  print pushd_cmd ; \
  system(pushd_cmd) ; \
  system("pwd"); \               # the same directory as before
  type="xml"
  ls_cmd = "ls *." type;         # so I can't find the files. Specifying with "./some/path/*.xml" doesn't work too (without trying to change the working directory)
  ...
Run Code Online (Sandbox Code Playgroud)

有人知道为什么系统在我的情况下不起作用吗?

Tay*_*nUB 5

system 将启动一个子进程,子进程不能改变其父进程的工作目录。

快速谷歌搜索显示 GNU AWK 文档的以下部分:http : //www.gnu.org/software/gawk/manual/html_node/Internal-File-Description.html#Internal-File-Description

这似乎暗示标准 AWK 没有更改工作目录的方法。(并且在 GNU AWK 中,您可以chdir像看到的那样使用它。)