これは2部構成の質問です。
シナリオ:スクリプトはcronjobにあります。フォルダがない場合は、システムが電子メールを送信し、フォルダが利用できないことを知らせるチケットを開きます。手動でログインして古いフォルダatmを削除する必要があります。
手動でスクリプトを実行し、「Y」を押して古いフォルダを削除するか、ログインしたまま続行するには、「Enter」を押してスクリプトを手動で実行できることを願っています。
これが私が今まで持っているものです...
#-- check to see if cache folder exists
{ echo "Checking to see if ...";
echo "${wDir}/${client%/}/.ftp-vendor-scripts/cache exists ... "; echo ""; } >> "$log"
if [ ! -d "${wDir}"/"${client%/}"/.ftp-vendor-scripts/cache ]; then
echo "Directory - ${wDir}/${client%/}/.ftp-vendor-scripts/cache DOES NOT exists - Failed ..." >> "$log";
if [ ******** this script is being executed manually ******* ]; then
echo "Would you like to delete the ${wDir}/${client%/}/.ftp-vendor-scripts folder?"
echo "Press \"Y\" to delete the ${wDir}/${client%/}/.ftp-vendor-scripts."
echo "Press \"Enter\" to continue without deleting the .ftp-vendor-scripts folder."
else
echo "Directory - ${wDir}/${client%/}/.ftp-vendor-scripts/cache DOES NOT exists - Failed ..." | mail -s "${wDir}/${client%/}/.ftp-vendor-scripts/ca$
fi
else
echo "Directory - ${wDir}/${client%/}/.ftp-vendor-scripts/cache exists - Success ..." >> "$log";
fi
ベストアンサー1
次のようなものが必要です。
#!/usr/bin/env sh
if [ -t 1 ]
then
interactive=1
else
interactive=0
fi
if [ "$interactive" -eq 1 ]
then
printf "interactive\n"
while true
do
printf "Rm directory? "
read -r reply
if [ "$reply" = "y" ]
then
printf "directory will be removed\n"
break
elif [ "$reply" = "n" ]
then
printf "directory will not be removed\n"
break
else
printf "Uknown reply - it must be either y or n\n"
fi
done
else
printf "non interactive\n"
fi
上記のスクリプトは互換性があり、POSIX
使用されます。または、モードshellcheck
で実行していることを確認し、それに応じて動作することもできます。私はそれを、とテストしました。interactive
non interactive
cron
bash
dash
Busybox ash
FreeBSD