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
別のものと交換してください。環境変数をイテレータとして使用しないことをお勧めします。