![$variable을 찾을 수 없습니다. Bash 명령 오류](https://linux55.com/image/99615/%24variable%EC%9D%84%20%EC%B0%BE%EC%9D%84%20%EC%88%98%20%EC%97%86%EC%8A%B5%EB%8B%88%EB%8B%A4.%20Bash%20%EB%AA%85%EB%A0%B9%20%EC%98%A4%EB%A5%98.png)
108 ps --ppid $process | while read -r line ; do
109 #echo $line | awk '{print $1;}
110 child=$($line | awk '{print $1;}')
111 echo $child
113 done
이 코드를 실행하면 다음 오류가 발생합니다.
line 111: 3405: command not found
하지만 109행의 주석 처리를 제거하면 오류 없이 올바른 값이 인쇄됩니다.
답변1
문제는 실제로 값을 $line
할당하는 것이 awk
아니라 명령으로 실행하려고 한다는 것입니다.
특정 PID를 가진 프로세스의 하위 항목을 출력하려는 경우 루프가 필요하지 않습니다.
ps --ppid "$process" -o pid=
그러면 PPID가 있는 프로세스 목록 $process
과 각 출력의 PID가 표시됩니다.
또한 관련:
답변2
고쳐라...
ps --ppid $process | while read -r line ; do
child=$(echo $line | awk '{print $1}')
done