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