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
테스트합니다 .104
wc -l
[
또는 ksh 구문을 사용하십시오.
if (($(wc -l < "$LOGFILE") +0 > 55)); then...
( 읽기 위해 열 수 없는 경우 와 같이 +0
명령이 출력을 생성하지 않는 경우를 다룹니다 ).wc -l < "$LOGFILE"
$LOGFILE
55
( 이전에 스크립트로 생성된 빈 파일을 삭제할 수도 있습니다 .)