0
ファイルが存在するかどうかをチェックするスクリプトがあります。ファイルがない場合は、スクリプトを続行するかどうかをユーザーに尋ねます。無限ループでreadコマンドを使用すると奇妙な動作が発生する
私が知りたいのは、キーボードの代わりに端末からの入力を除いてreadコマンドがあることです。
function isfileThere(){
output=$(ls ${1} 2>&1 >/dev/null)
case $output in
*"No such file or directory"*)
echo "DS not found: $output";
option_exitprog; $output >> DSNotFound.txt ;;
*) echo "DS found: $output";;
esac
}
function option_exitprog(){
while :
do
echo -n "Would you like to continue (y/n)?"
read Answer
#read -n1 -p "Would you like to continue (y/n)?" Answer
if [ ! -z "$Answer" ] ; then
if [ "$Answer" == "y" ] ; then
echo "Exiting script. Goodbye"
exit 1
elif [ "$Answer" == "n" ] ; then
echo "Continue With Program"
break
else
echo "We only accept (y/n)"
fi
else
echo "You have entered a null string. We only accept (y/n)"
fi
done
}
function get_TotalEventEntries(){
cat<<EOF
####################################
# #
# #
# get Total Entries #
# #
# #
####################################
EOF
while read LINE
do
let total_DSNumber=total_DSNumber+1
#Check if files exist
isfileThere ${FileDir}/*${LINE}*/*.root*
#print to file
#printf "${LINE}=" >> ${Filename}
#getEntries ${LINE} >> ${Filename}
done < ${DSWildCardFile}
echo "Finished running over $total_DSNumber file(s)"
}
get_TotalEventEntries
var 'DSWildCardFile'はどこに定義されていますか?また、予想される行動が何であるかを示すためにあなたの投稿を編集すると役立つかもしれません。エラーメッセージが表示されますか?あなたは(例外の代わりに)受け入れるか期待するのですか?スクリプトの最上部に 'set -vx'を追加してデバッグを試みましたか?がんばろう。 – shellter
Ditto、 'while'ループの入力は、' $ DSWildCardFile'が展開するものであれば何でも構いません。 – tripleee
ファイルが存在するかどうかのチェック方法を変更する必要があります。 '[-f $ file]]'を使用してください。一般に、スクリプトの中で 'ls'を使用している場合、間違っています。 – jordanm