پس اگر خاستیم متغیری تو یک تابع استفاده کنیم باید به اون تابع متغیرمون رو بفرستیم.
اگه متغیره جزو $1 و $2 و... نباشه فکر کنم تو تابع هم می تونه استفاده شه بدون فرستادن.
در مورد سوال دوم:
۱− در شرط if حواستون باشه space گذاری رو رعایت کنید فقط [ "$sign" = "taghsim" ] رو درست نوشتید بقیه space کم دارن که باعث میشه خطا پیش بیاد.
۲− با تبدیل elseif ها به elif و گذاشتن done در آخر کدتون درست میشه.
#!/bin/bash
x="taghsim zarb gam menha"
y=10
select sign in $x; do
if [ "$sign" = "taghsim" ]; then
echo $(($y/2))
elif [ "$sign" = "zarb" ]; then
echo $(($y*2))
elif [ "$sign" = "gam" ]; then
echo $(($y+2))
else
echo $(($y-2))
fi
done
در مورد سوال سوم:
ساختار شرط bash به این شکل هست:
if condition
then
statements
[elif condition
then statements...]
[else
statements]
fi
درستش اینه که از elif استفاده کنید ولی از else if هم میشه استفاده کرد که یکم نکته داره استفاده ازش.برای مثال کدتون آخرش باید ۳ تا fi داشته باشه.اینم دلیلش
:
#!/bin/bash
x="taghsim zarb gam menha"
y=10
select sign in $x; do
if [ "$sign" = "taghsim" ]; then
echo $(($y/2))
else
if [ "$sign" = "zarb" ]; then
echo $(($y*2))
else
if [ "$sign" = "gam" ]; then
echo $(($y+2))
else
echo $(($y-2))
fi
fi
fi
done
فکر کنم با این دندانه گذاری فرق else if با elif واضح باشه.else if در حقیقت مثل اینه که در داخل بلاک else یک شرط if گذاشته شه.
و این که دندانه گذاری هم همیشه رعایت کنید تا اشکالات این چنین کمتر شه
مثلا کد بالا رو میشه این جوری هم نوشت (ولی خوب نا واضح و زشته) (البته در کل else if زشته)
:
#!/bin/bash
x="taghsim zarb gam menha"
y=10
select sign in $x; do
if [ "$sign" = "taghsim" ]; then
echo $(($y/2))
else if [ "$sign" = "zarb" ]; then
echo $(($y*2))
else if [ "$sign" = "gam" ]; then
echo $(($y+2))
else
echo $(($y-2))
fi
fi
fi
done