중괄호 확장 내부의 백틱

중괄호 확장 내부의 백틱

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.

  1. 지원확대,
  2. 물결표 확장,
  3. 매개변수 및 변수 확장,
  4. 명령 대체,
  5. 산술 확장,
  6. 분사,
  7. 경로명 확장.

대체 솔루션:

for pid in $( pidof httpd ); do ls -l /proc/"$pid"; done

관련 정보