小编msb*_*msb的帖子

大括号扩展内的反引号

我试图列出 httpd 进程的文件,我试过这个:

ls -l /proc/{`pidof httpd | tr ' ' ','`}/
ls: cannot access /proc/{{28493,28492,28491,28490,28489,28488,28487,28486,28483}}/: No such file or directory
Run Code Online (Sandbox Code Playgroud)

但是,如果我自己将 PID 放在括号内,它会起作用:

ls -l /proc/{28493,28492,28491,28490,28489,28488,28487,28486,28483}/ | head -6
/proc/28483/:
total 0
dr-xr-xr-x 2 root root 0 Jan 30 11:18 attr
-rw-r--r-- 1 root root 0 Jan 30 11:18 autogroup
-r-------- 1 root root 0 Jan 30 11:18 auxv
Run Code Online (Sandbox Code Playgroud)

我相信在第一种情况下,shell 将反引号输出视为单个参数,并且不会扩展。所以我想知道,有没有办法让它被视为要扩展的列表?我知道我可以用 for 循环或许多其他方式来做到这一点。我对学习更多关于反引号和大括号扩展特别感兴趣,假设有可能做到这一点。

bash brace-expansion command-substitution

3
推荐指数
1
解决办法
282
查看次数