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
발생 합니다 . 루프 내부나 루프 이후 에만 작동하는 것 같습니다 . 다른 모든 것, 심지어 기본 명령(예: )에서도 이 오류가 발생합니다.cp
command not found
echo
touch
물론 이미 openssl
설치해두었기 때문에 cp
명령어 수가 적지 않습니다. 모두 명령줄에서 실행됩니다.
루프 내부 또는 루프 이후에만 발생한다는 것을 알았습니다. 또는 해당 회선 이전에 전화를 시도하면 openssl
올바르게 실행됩니다.cp
for PATH...
이 단순화된 버전에서도 동일한 오류가 발생합니다.
for PATH in "/etc/letsencrypt/live/*"
do
cp
done
루프에 어떤 문제가 있으며 왜 그렇게 이상한 오류가 발생합니까?
답변1
PATH
다른 것으로 교체하십시오 . 환경 변수를 반복자로 사용하지 않는 것이 가장 좋습니다.