msb*_*msb 3 bash brace-expansion command-substitution
我试图列出 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
是先完成大括号扩展,然后才处理命令替换。
以下是由bash
以下人员完成的顺序:
替代解决方案:
for pid in $( pidof httpd ); do ls -l /proc/"$pid"; done
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
282 次 |
最近记录: |