انجمنهای فارسی اوبونتو
کمک و پشتیبانی => برنامهسازی => نویسنده: moslem.b در 23 آبان 1389، 08:02 قظ
-
من یه اسکریپت به شکل زیر دارم چجوری میتونم کاری کنم که اگه کاربر جوابی بجز y / n بزنه دوباره اسکریپت برگرده سوال رو از ابتدا تکرار کنه تا کاربر مجبور بشه y یا n بزنه
echo "Are you ready for update your system ? ( y/ n )"
read question1
if [ $question1 = "y" ] || [ $question1 = "Y" ]
then
{
apt-get update | echo "Your system upadated . . ."
elif [ $question1 = "n" ] || [ $question1 = "N" ]
then
echo "you should update system" | echo "Your system not upadated . . ."
else
echo "Please chose y or n"
fi
-
#!/bin/bash
question1 = "x"
echo "Are you ready for update your system ? ( y/ n )"
while [ "$question1" != "Y" ] && [ "$question1" != "y" ] && [ "$question1" != "N" ] && [ "$question1" != "n" ]
do
read question1
if [ "$question1" == "Y" ] || [ "$question1" == "y" ]
then
echo "Your system upadated . . ."
elif [ "$question1" == "N" ] || [ "$question1" == "n" ]
then
echo "You should update your system" | echo "Your system not upadated . . ."
else
echo "Please choose y or n!"
fi
done
-
مرسی حجت جان فقط این question1 = x که خط اول نوشتی واسه چیه ؟ تو ترمینال هم ارور میده
-
برای مقدار دادن اولیه هست که داخل حلقه با یه مقداری بره که حتما بدنه حلقه یه بار اجرا بشه.
-
ولی توی ترمینال ارور میده و وقتی حذفش می کنم بدون مشکل اجرا میشه line 3: question1: command not found
-
در ترمینال بنده که مشکلی وجود ندارد. شاید به دلیل وجود فاصله (space) اطراف '=' باشد. می توانید این مورد را امتحان کنید.
در هر صورت مقدار اولیه متغیر question1 چیزی غیر از کاراکترهای y,n ,Y,N می باشد که بدون اشکال اجرا می شود.
خوشحالم که مشکلتان حل شد. قرار دادن [کلمه حل شد] در عنوان تاپیک را فراموش نکنید.
موفق باشید.
-
مرسی از کمکتون