이 명령(pgrep -d ',' -f cmdStr | top -c -p)이 작동하지 않는 이유를 설명해 주시겠습니까?

이 명령(pgrep -d ',' -f cmdStr | top -c -p)이 작동하지 않는 이유를 설명해 주시겠습니까?

top콘솔에서 명령을 필터링하는 방법을 찾던 중 답을 찾았습니다.

top -c -p $(pgrep -d',' -f string_to_match_in_cmd_line)

완벽하게 작동합니다.

적어도 출력을 입력으로 pgrep -d ',' -f cmdStr | top -c -p공급하는 작업을 수행할 것이라고 생각하기 때문에 명령과 동일하다고 생각합니다.pgreptop

그러나 예상한 대로 오류가 반환됩니다.top: -p requires argument

그들 사이의 차이점은 무엇입니까?

답변1

아니요, 동일하지 않습니다. echo명령을 생각해 보세요 . 당신은 그것을 기대하고 있습니까?

echo hello asleea

그리고

printf "asleaa\n" | echo hello

똑같은 걸 생산해? 이 top ... $(...)경우 셸은 먼저 셸의 내용을 실행 $(...)하고 런타임 시 인수 목록에 출력을 배치합니다 top.

틀림없이top 할 수 있다인수가 필요한 플래그를 줬는데 주지 않으면 stdin에서 추가 값을 읽어오도록 작성할 수는 있는데 그렇게 구현되지는 않습니다.

관련 정보