때때로 프로세스를 따라야하고 항상 bash 스크립트가 pid=$1
입니다. 내가 아는 한, 특정 프로세스를 실행하고있는 첫 번째 셸 인스턴스에 보낸 프로세스 ID를 가져와야하며 나중에이를 사용할 수도 있습니다 (예 : 죽이거나 메모리 사용을 따르거나 다른 것으로). pid=$0
은 현재 인스턴스 (bash)를 얻고 pid=$!
은 최신 인스턴스를 가져와야합니다. (내가 틀렸다면 올바른가하십시오)정확하게 프로세스 ID를 얻으려면
문제는 다음과 같습니다마다 내가 pid=$1
명령을 실행해야 pid
는 아무것도 echo $pid
또는 echo ${pid}
인쇄 및 빈 줄을 얻을 수 없다, 나는 항상 공상에 pid=$!
를 사용하여 수행하는 방법이 필요합니다 대신, 내 프로세스 ID를 얻는 유일한 방법이기 때문입니다. 아무도 왜 내 터미널의 행동을 알고 있니?
'$ 0'과'$ 1'은 스크립트 (또는 함수)에 제공되는 위치 매개 변수를 얻습니다. 이들이 PID가 되려면 스크립트/함수가 인수로 PID를 전달해야합니다. 아, 그리고'$ 0'은 일반적으로 스크립트/함수의 이름이기 때문에 결코 PID가 아닐 것입니다 - 실제 인수는'$ 1'로 시작합니다 ... – twalberg
@twalberg 스크립트 파일에서만 작동합니까? 터미널에서 직접 실행하려고하면 작동하지 않는 것입니까? – rafa
일반적으로 터미널에서 실행중인 셸은 인수없이 호출되므로'$ 1'은 비어 있고'$ 0'은 셸 이름 만 포함합니다. 어떤 점에서 그것을 변경하기 위해'set'을 사용했을 수도 있습니다. 'echo "$ 1"'등 ... – twalberg