انجمنهای فارسی اوبونتو
کمک و پشتیبانی => سایر توزیعهای گنو/لینوکس => دبیان => نویسنده: rahimi12 در 08 فروردین 1396، 10:03 بظ
-
سلام میخوام لطف کنید کمک کنید این کار رو انجام بدم
فرض کنین در بش اسکریپت میخوام مثلا این مقادیر رو بعنوان متغیر بدم
a=34
b=32
حالا مثلا وقتی کاربر کلمه ab رو به همین صورت که نوشتم وارد کرد بش اسکریپت براش اینو چاپ کنه
3432
خب اینو چطوری اینکارو کنم؟
منظورم واضح بود درسته؟ حالا لطفا راهنمایی بفرمایید
-
با if می شه این کا رو انجام داد
-
با if می شه این کا رو انجام داد
سلام شما جای من بودی متوجه میشدی؟
برادر عزیز توی کد توضیح بدین چی میشه خب
منم راهنمایی میخوام که مطرح کردم
-
سلام میخوام لطف کنید کمک کنید این کار رو انجام بدم
فرض کنین در بش اسکریپت میخوام مثلا این مقادیر رو بعنوان متغیر بدم
a=34
b=32
حالا مثلا وقتی کاربر کلمه ab رو به همین صورت که نوشتم وارد کرد بش اسکریپت براش اینو چاپ کنه
3432
خب اینو چطوری اینکارو کنم؟
منظورم واضح بود درسته؟ حالا لطفا راهنمایی بفرمایید
خب این با if هستش : a=34
b=32
read -p "give me some letters: " $let
if [ "$let" == "ab" ]; then
echo "$a$b"
fi
و اگه می خواید تعداد زیادی رو راحتتر چک کنید از این استفاده کنید: a=34
b=32
c=36
d=40
read -p "give me some letters: " $let
case $let in
"ab" ) echo "$a$b";;
"ac" ) echo "$a$c";;
"ad" ) echo "$a$d";;
"bc" ) echo "$b$c";;
"bd" ) echo "$b$d";;
# and so on...
esac
-
سلام میخوام لطف کنید کمک کنید این کار رو انجام بدم
فرض کنین در بش اسکریپت میخوام مثلا این مقادیر رو بعنوان متغیر بدم
a=34
b=32
حالا مثلا وقتی کاربر کلمه ab رو به همین صورت که نوشتم وارد کرد بش اسکریپت براش اینو چاپ کنه
3432
خب اینو چطوری اینکارو کنم؟
منظورم واضح بود درسته؟ حالا لطفا راهنمایی بفرمایید
خب این با if هستش : a=34
b=32
read -p "give me some letters: " $let
if [ "$let" == "ab" ]; then
echo "$a$b"
fi
و اگه می خواید تعداد زیادی رو راحتتر چک کنید از این استفاده کنید: a=34
b=32
c=36
d=40
read -p "give me some letters: " $let
case $let in
"ab" ) echo "$a$b";;
"ac" ) echo "$a$c";;
"ad" ) echo "$a$d";;
"bc" ) echo "$b$c";;
"bd" ) echo "$b$d";;
# and so on...
esac
بسیار ممنونم.
حالا برعکس اینکار چطور ممکن است؟
مثلا کاربر 3432 وارد بکند بش هم برگرده و ab براش چاپ کنه
-
با یه if دیگه :P
-
با یه if دیگه :P
ای بابا. چجور خب
-
ای بابا. چجور خب
احتمالا بهتر هست که کمی در مورد Bash Scripting مطالعه کنید و تنها مشکلاتتون رو بپرسید، نه اینکه بخواید فرد دیگهای همهی کد رو براتون بنویسه. برای مثال: لینک (https://linuxconfig.org/bash-scripting-tutorial)
-
سوال آخرم
برای اینکه درخاستی به سمت یک صفحه وب بفرستیم دستوزش اینه؟
Curl http://mysite.ir/page.php?id=2e
؟؟
-
سوال آخرم
برای اینکه درخاستی به سمت یک صفحه وب بفرستیم دستوزش اینه؟
Curl http://mysite.ir/page.php?id=2e
؟؟
منظورتون از درخواست چه نوع درخواستی هست؟http؟
خوندن این هم میتونه مفید باشه:
man curl
-
راستی چرا توی انجمن دبیان تاپیک باز کردید؟
-
راستی چرا توی انجمن دبیان تاپیک باز کردید؟
توزیعم بر پایه دبیانه
-
بسیار ممنونم.
حالا برعکس اینکار چطور ممکن است؟
مثلا کاربر 3432 وارد بکند بش هم برگرده و ab براش چاپ کنه
بهترین کاری که من بلد بودم این بود: :P #!/bin/bash
read -p "give me some numbers: " num
echo -e "\n"
for number1 in {2..100..2}; do
if [ "$(echo $num | wc -m)" -lt "$number1" ]; then
break
fi
number2=$(expr $number1 - 1)
numi=$(echo $num | cut -b -$number1 | cut -b $number2-)
case $numi in
"34" ) printf "a";;
"32" ) printf "b";;
"36" ) printf "c";;
esac
done
echo -e "\n"
محدودیتش رو هم می تونید از {2..100..2} افزایش بدید و ۱۰۰ رو هرچقدر بیشتر کنید بیشتر می تونید عدد ۲ رقمی استخراج کنید
و خب فقط روی اعداد ۲ رقمی کار می کنه! ;D
-
راستی چرا توی انجمن دبیان تاپیک باز کردید؟
توزیعم بر پایه دبیانه
خب چه ربطی داره! این کامندا روی آرچ یا اوبونتو کار نمی کنه؟
-
دیگ ببخشین اگ جای نامناسبی موضوع باز کردم
-
با سلام
تو سوال اول الگوریتم دوستان خیلی خوب بود و واقعا راه حل بهتری به ذهن من نمی رسه (البته می شد از a+=$b هم استفاده کرد ولی واقعاً $a$b بهتره)
ولی اما سوال دوم ; من دقیق نفهمیدم منظورتون چیه اگه سوالتون اینه که کارکترهای ab رو چاپ کنه در اون صورت برنامه از کجا باید بفهمه که کارکتر a معادل 34 و کارکتر b معادل 32 هستش ؟ آيا این معادل بودن رو کاربر تعیین می کنه (با گرفتن ورودی از کاربر) و یا به صورت پیش فرض تو دستورات وجود داره ؟ اگه این مورد باشه لطفا یه مقدار بیشتر توضیح بدین
در هر صورت شمای کلی اسکریپت این شکلی میشه :
#!/bin/bash
read -p "Which number do you want to equal with a character: " a
read -p "Which number do you want to equal with b character: " b
read -p "Please enter a number that you want to be shown with characters: " number
A=$(echo $number | grep -o .. | sed -n '1p')
B=$(echo $number | grep -o .. | sed -n '2p')
if [ $A -eq $a ] ; then
printf 'a'
fi
if [ $B -eq $b ] ; then
printf 'b\n'
fi
ولی اگه منظورتون اینه که با زدن 3432 بنویسه a = 34 , b = 32 در اون صورت می تونین از دستورات زیر استفاده کنین :
#!/bin/bash
echo $1 | grep -o ..
و نحوه ی فراخوانی هم به این صورت هستش (مقادیر به صورت آرگومان به اسکریپت داده می شن) :
./script.sh 1234
و خروجی به این صورت هستش :
12
34
ولی اگه بخواین خروجی رو تو یه مقدار ذخیره اش کنین تا بعدا ازشون استفاده کنین (نه اینکه صرفا خروجی رو به نمایش بذارین) می تونین از این دستورات کمک بگیرین :
#!/bin/bash
a=$(echo $1 | grep -o .. | sed -n '1p')
b=$(echo $1 | grep -o .. | sed -n '2p')
echo a=$a b=$b
تو تمام دستورات بالا برای خلاصه شدن و جمع و جور شدن دستورات من مقدار c رو به عنوان آرگومان به اسکریپت می دادم ولی شما می تونین اون رو به این شکل در حین اجرای اسکریپت از کاربر بخواین :
#!/bin/bash
read -p "Please enter a number to separate it !: " number
a=$(echo $number | grep -o .. | sed -n '1p')
b=$(echo $number | grep -o .. | sed -n '2p')
echo a=$a b=$b
و اگه اول بخواین چک کنین ببینین که ورودی ۴ حرفی باشه بعد عمل تجزیه رو انجام بدین می تونین از دستورات زیر استفاده کنین :
#!/bin/bash
read -p "Please enter a number to separate it !: " number
if [ ${#number} -eq 4 ] ; then
a=$(echo $number | grep -o .. | sed -n '1p')
b=$(echo $number | grep -o .. | sed -n '2p')
echo a=$a b=$b
else
echo "Please enter 4-digit number !"
fi
در مورد سوال سومتون (در خواست از یک سایت) هم باید بگم متاسفانه خیلی گنگ و کلی پرسیدین و واقعا نمی شه نظری داد لطفا سوالتون رو دقیق تر بپرسین (البته تو یک تاپیک مجزا)
-
با سلام
تو سوال اول الگوریتم دوستان خیلی خوب بود و واقعا راه حل بهتری به ذهن من نمی رسه (البته می شد از a+=$b هم استفاده کرد ولی واقعاً $a$b بهتره)
ولی اما سوال دوم ; من دقیق نفهمیدم منظورتون چیه اگه سوالتون اینه که کارکترهای ab رو چاپ کنه در اون صورت برنامه از کجا باید بفهمه که کارکتر a معادل 34 و کارکتر b معادل 32 هستش ؟ آيا این معادل بودن رو کاربر تعیین می کنه (با گرفتن ورودی از کاربر) و یا به صورت پیش فرض تو دستورات وجود داره ؟ اگه این مورد باشه لطفا یه مقدار بیشتر توضیح بدین
در هر صورت شمای کلی اسکریپت این شکلی میشه :
#!/bin/bash
read -p "Which number do you want to equal with a character: " a
read -p "Which number do you want to equal with b character: " b
read -p "Please enter a number that you want to be shown with characters: " number
A=$(echo $number | grep -o .. | sed -n '1p')
B=$(echo $number | grep -o .. | sed -n '2p')
if [ $A -eq $a ] ; then
printf 'a'
fi
if [ $B -eq $b ] ; then
printf 'b\n'
fi
ولی اگه منظورتون اینه که با زدن 3432 بنویسه a = 34 , b = 32 در اون صورت می تونین از دستورات زیر استفاده کنین :
#!/bin/bash
echo $1 | grep -o ..
و نحوه ی فراخوانی هم به این صورت هستش (مقادیر به صورت آرگومان به اسکریپت داده می شن) :
./script.sh 1234
و خروجی به این صورت هستش :
12
34
ولی اگه بخواین خروجی رو تو یه مقدار ذخیره اش کنین تا بعدا ازشون استفاده کنین (نه اینکه صرفا خروجی رو به نمایش بذارین) می تونین از این دستورات کمک بگیرین :
#!/bin/bash
a=$(echo $1 | grep -o .. | sed -n '1p')
b=$(echo $1 | grep -o .. | sed -n '2p')
echo a=$a b=$b
تو تمام دستورات بالا برای خلاصه شدن و جمع و جور شدن دستورات من مقدار c رو به عنوان آرگومان به اسکریپت می دادم ولی شما می تونین اون رو به این شکل در حین اجرای اسکریپت از کاربر بخواین :
#!/bin/bash
read -p "Please enter a number to separate it !: " number
a=$(echo $number | grep -o .. | sed -n '1p')
b=$(echo $number | grep -o .. | sed -n '2p')
echo a=$a b=$b
و اگه اول بخواین چک کنین ببینین که ورودی ۴ حرفی باشه بعد عمل تجزیه رو انجام بدین می تونین از دستورات زیر استفاده کنین :
#!/bin/bash
read -p "Please enter a number to separate it !: " number
if [ ${#number} -eq 4 ] ; then
a=$(echo $number | grep -o .. | sed -n '1p')
b=$(echo $number | grep -o .. | sed -n '2p')
echo a=$a b=$b
else
echo "Please enter 4-digit number !"
fi
در مورد سوال سومتون (در خواست از یک سایت) هم باید بگم متاسفانه خیلی گنگ و کلی پرسیدین و واقعا نمی شه نظری داد لطفا سوالتون رو دقیق تر بپرسین (البته تو یک تاپیک مجزا)
مرسی درباب سومی بگم ک منظور از درخواست اینه انگار مثل این میمونه که یک شخصی به یک سایت یا پروفایلی سر زده باشه. این کار با curl چجوری میشه
-
دیگ ببخشین اگ جای نامناسبی موضوع باز کردم
بهتره به مدیران انجمن بگید جا به جاش کنن
-
موضوع به دلیل هنوان نامناسب و پرسیدن چندین پرسش در یک موضوع قفل شد.