반복 후 bash 스크립트에서 "명령을 찾을 수 없음" 오류

반복 후 bash 스크립트에서 "명령을 찾을 수 없음" 오류

Debian 10에서 bash 스크립트를 작성하려고 합니다.

  • 디렉터리 보기
  • 모든 하위 디렉토리를 발견하십시오
  • 어떤 파일이 있는지 확인하세요.fullchain.pem
  • 이 파일을 변환 openssl하고 결과를 다른 디렉터리에 복사하세요.

이것이 내가 하고 싶은 일이다:

ROOTPATH="/etc/letsencrypt/live"

for PATH in $ROOTPATH/*
do
  if test -f "${PATH}/fullchain.pem"; then
    openssl pkcs12 -export -out $PATH/fullchain.pfx -in $PATH/fullchain.pem -inkey $PATH/privkey.pem -passin pass:whatever -passout pass:whatever
    cp $PATH/fullchain.pem ./Server/fullchain.pfx
  fi
done

질문:오류 가 openssl발생 합니다 . 루프 내부나 루프 이후 에만 작동하는 것 같습니다 . 다른 모든 것, 심지어 기본 명령(예: )에서도 이 오류가 발생합니다.cpcommand not foundechotouch

물론 이미 openssl설치해두었기 때문에 cp명령어 수가 적지 않습니다. 모두 명령줄에서 실행됩니다.

루프 내부 또는 루프 이후에만 발생한다는 것을 알았습니다. 또는 해당 회선 이전에 전화를 시도하면 openssl올바르게 실행됩니다.cpfor PATH...

이 단순화된 버전에서도 동일한 오류가 발생합니다.

for PATH in "/etc/letsencrypt/live/*"
do
  cp
done

루프에 어떤 문제가 있으며 왜 그렇게 이상한 오류가 발생합니까?

답변1

PATH다른 것으로 교체하십시오 . 환경 변수를 반복자로 사용하지 않는 것이 가장 좋습니다.

관련 정보