pid=$(pgrep 'engrampa') #Get the PID of the engrampa processes .
killpid=$(echo $pid | head -1) #Get only the first line of the $pid variable and put into a new variable called $killpid.
kill $killpid
변수의 첫 번째 행만 유지하고 싶습니다 $pid
.
engrampa
3개의 오픈 프로세스 인스턴스가 있다고 가정해 보겠습니다 .
터미널에서 위의 명령을 단계별로 실행하면 원하는 결과를 얻을 수 있습니다.2590
https://i.stack.imgur.com/L3U2g.jpg
스크립트에서 이러한 exaclty 명령을 실행하면 다음과 같은 결과가 나타납니다.2590 18425 18449
https://i.stack.imgur.com/RuGX9.jpg
왜 이런 일이 발생합니까?
답변1
편집: Steeldriver의 의견 덕분에 내 문제가 확인되었습니다.
뛰어 echo $pid | head -1
들어 bash
아무것도 하지 마세요. 쉘에서 동일한 명령을 실행하면 zsh
원하는 결과를 얻을 수 있습니다.
bash 쉘 출력 ->2590 18425 18449
zsh 쉘 출력->2590
즉, 스크립트의 셸을 #!/bin/zsh
.
편집: 또 다른 더 적합한 솔루션은 두 쉘 모두에서 작동하는 것 echo $pid | awk '{print $1}'
입니다 . echo $pid | head -1
Christopher님의 의견에 감사드립니다.