다른 쉘을 사용하여 다른 스크립트를 호출하는 스크립트에서 오류가 발생했습니다.

다른 쉘을 사용하여 다른 스크립트를 호출하는 스크립트에서 오류가 발생했습니다.

sh 쉘에서 실행되는 스크립트가 있는데 잘 작동합니다. 하지만 ksh 쉘로 작성된 스크립트를 추가했지만(스크립트 헤드에 #!/bin/ksh가 있음) 오류가 발생할 때마다

./monitor_FMn2.sh[19]: 104:  not found

변경할 때마다 오류가 발생하는 두 번째 줄인 19번째 줄은 ksh 스크립트를 호출하는 줄입니다.

if `wc -l < $LOGFILE` > 55;
    then
    logcycle $LOGFILE
fi

로그 회전ksh 스크립트입니다.

답변1

`wc -l < $LOGFILE` > 55

주제의 출력(귀하의 경우 104)에 대해 분할+glob 명령을 실행하고 해당 출력을 wc현재 디렉터리에서 호출되는 파일로 리디렉션합니다. 55시스템에 104라는 명령이 없기 때문에 이 오류가 발생합니다.

아마도 당신은 다음과 같이 쓰고 싶을 것입니다:

if [ "$(($(wc -l < "$LOGFILE") +0))" -gt 55 ]; then...

[즉, 대신 aka 명령을 실행하여 산술 표현식으로 해석된 출력이(따라서 선행 공백(있는 경우)에 대해 불평하지 않음)이 55보다 큰지 test테스트합니다 .104wc -l[

또는 ksh 구문을 사용하십시오.

if (($(wc -l < "$LOGFILE") +0 > 55)); then...

( 읽기 위해 열 수 없는 경우 와 같이 +0명령이 출력을 생성하지 않는 경우를 다룹니다 ).wc -l < "$LOGFILE"$LOGFILE

55( 이전에 스크립트로 생성된 빈 파일을 삭제할 수도 있습니다 .)

관련 정보