
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
しかし、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
私はシェルがバックティック出力を単一の引数として扱い、拡張しない最初のケースを信じています。それでは、拡張するリストのように見せる方法があるかどうか疑問に思います。 forループや他の多くの方法でこれを行うことができることを知っています。私は特にバックティックと中括弧の拡張についてもっと学びたいです。これが可能であると仮定します。
答え1
inの評価順序bash
は、中括弧拡張が最初に実行され、次にコマンド置換が処理されることです。
タスクを完了する手順は次のとおりですbash
。
- サポート拡大、
- チルダ拡張、
- パラメータと変数の拡張、
- コマンドの置き換え、
- 算術拡張、
- 噴射、
- パス名拡張。
代替ソリューション:
for pid in $( pidof httpd ); do ls -l /proc/"$pid"; done