
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
이름이 Split+glob 대상의 출력(귀하의 경우 104)인 명령을 실행하고 해당 출력을 현재 디렉터리에서 wc
호출되는 파일로 리디렉션합니다 . 55
시스템에 104라는 명령이 없으므로 해당 오류가 발생합니다.
아마도 당신은 다음과 같이 쓰고 싶었을 것입니다.
if [ "$(($(wc -l < "$LOGFILE") +0))" -gt 55 ]; then...
즉, [
aka test
명령(대신 )을 실행하여 산술 표현식으로 해석된 104
출력 (따라서 선행 공백이 있는 경우 불평하지 않음)이 55보다 큰지 테스트합니다.wc -l
[
또는 ksh 구문을 사용하면:
if (($(wc -l < "$LOGFILE") +0 > 55)); then...
( 읽기 위해 열 수 없는 경우와 같이 명령이 출력을 생성하지 않는 +0
경우를 위한 것입니다 ).wc -l < "$LOGFILE"
$LOGFILE
55
( 이전에 스크립트로 생성된 빈 파일을 제거할 수도 있습니다 ).