これは私がLinuxコースのために書いているスクリプトです。 Case文=を再実行するためにwhileループを追加したいと思います。どんな助けでも大変感謝します。これは私のスクリプトです。
#!/bin/bash
DATE=$(date -d "$1" +"%m_%d_%Y");
clear
echo -n " Have you finished everything?"
read response
if [ $response = "Y" ] || [ $response = "y" ]; then
echo "Do you want a cookie?"
exit
elif [ $response = "N" ] || [ $response = "n" ]; then
echo "1 - Update Linux debs"
echo "2 - Upgrade Linux"
echo "3 - Backup your Home directory"
read answer
case $answer in
1) echo "Updating!"
sudo apt-get update;;
2) echo "Upgrading!"
sudo apt-get upgrade;;
3) echo "Backing up!"
tar -cvf backup_on_$DATE.tar /home;;
esac
echo "Would you like to choose another option?"
read condition
fi
答え1
while true; do
#your code
#break to break the infinite loop
break
done
答え2
私はあなたがクラスのためにこれをやっていることを知っており、最近は純粋な答えを提供するだけでなく、ユーザーが自分で正しい答えを見つけることができるように案内することについて話しています。これは通常、質問形式のコメント(ソクラテス方式とも呼ばれます)を介して行われます。私はこのアプローチがあまりにも円形だと思います。答えはただ答えでなければならず、いっぱい答えは、質問に最初に遭遇したユーザーを混乱させるほどあいまいではありません。
あなたがあなたの声明を具体的に再利用する方法を探しているなら、case
これはあなたのための答えではありません。ただし、if/else
純粋なロジックといくつかのトリックを使用して別の方法でこの問題にアクセスしたい場合は、functions
次のことをお勧めします。
#!/bin/bash
# try to refrain from setting variables in all-caps,
# which could possibly override default shell environment variables
# not exactly sure why you're passing an argument to date here,
# but that's beside the point. For my own purposes, I will comment it out
# and just make the variable of today's date
# DATE="$(date -d "$1" +"%m_%d_%Y")"
date="$(date +%m_%d_%Y)"
clear
# read -p prompts for user input and then sets the response as a variable
read -p "Have you finished everything? [y/n] " response
# with single brackets, you can use the -o flag to represent "or"
# without having to include additional conditional brackets
if [ "$response" = "Y" -o "$response" = "y" ]; then
echo "Do you want a cookie?"
exit
elif [ "$response" = "N" -o "$response" = "n" ]; then
echo "1 - Updadate Linux Debs"
echo "2 - Upgrade Linux"
echo "3 - Backup your Home directory"
else
echo error.
exit
fi
do_stuff() {
read -p "Choose an option: [1-3] " answer
if [[ $answer = 1 ]]; then
echo "Updating!"
sudo apt-get update
elif [[ $answer = 2 ]]; then
echo "Upgrading!"
sudo apt-get upgrade
elif [[ $answer = 3 ]]; then
echo "Backing up!"
tar -cvf "backup_on_${date}.tar" /home
else
echo error.
exit
fi
do_again
}
do_again() {
read -p "Would you like to choose another option? [y/n] " condition
if [ "$condition" = "y" -o "$condition" = "Y" ]; then
do_stuff
else
echo goodbye.
exit
fi
}
do_stuff