이름으로 프로세스를 검색하고 해당 프로세스가 주어진 값을 초과하면 결과를 반환하기 위해 쓰는 쉘 스크립트가 있습니다.쉘 스크립트 내에서 awk에 변수 전달하기
먼저 명명 된 프로세스를 찾는 중입니다. 이 스크립트는 현재 다음과 같습니다.
#!/bin/bash
findProcessName=$1
findCpuMax=$2
#echo "parameter 1: $findProcessName, parameter2: $findCpuMax"
tempFile=`mktemp /tmp/processsearch.XXXXXX`
#echo "tempDir: $tempFile"
processSnapshot=`ps aux > $tempFile`
findProcess=`awk -v pname="$findProcessName" '/pname/' $tempFile`
echo "process line: "$findProcess
`rm $tempFile`
변수를 awk 명령에 전달하려고하면 오류가 발생합니다. awk의 제 버전을 확인했고 그것은 확실히 -v
플래그를 지원합니다.
findProcess
변수 할당의 '/pname/'
부분을 바꾸면 스크립트가 작동합니다.
구문을 검사 해 보았습니다. 아무도 내가 잘못 가고있는 것을 지적 할 수 있습니까? 당신이 변수로 패턴을 통과 할 때의 PS 출력은 파일
로가는 패턴 일치 연산자를 사용합니다 :
우수함! 고맙습니다. 또한, "pgrep 사용"이라고 말하는 것이 아니라 쉘 스크립트의 잘못된 부분에 대해 설명해 주셔서 감사합니다. 나는 쉘 스크립트 (shell scripting)에서 여전히 아주 친환경적이어서, 설명 된 것들을 가지고있는 것이 매우 도움이된다. –