در توسینسو تدریس کنید

و

با دانش خود درآمد کسب کنید

آموزش لینوکس : مدیریت سیستم : قسمت 5 : Read User Input

سلام و وقت بخیر. مسلما ما فقط نمی خواهیم که برنامه یک رشته از قبل تعریف شده را چاپ کند. برنامه ما باید بتواند ورودی هم بگیرد. برای خواندن ورودی میتوان از 2 روش کلی استفاده کرد:

1- دستور read

2- Positional Parameters

دستور read دقیقا مثل دستور scanf در C و یا cin در ++C است. این دستور مقداری را از صفحه کلید کاربر میگیرد. به مثال ساده زیر توجه کنید. همان سندی که جلسه قبل ایجاد کردید را با vim یا gedit باز کنید و کد های زیر را درون آن بنویسید.

#!/bin/bash

echo -e "Enter your name: \c"

read INPUT_NAME

echo "Hello $INPUT_NAME"

exit 0

خروجی بصوزت زیر خواهد بود:

[mohammad@CentOS6 bin]$ hello.sh 
Enter your name: Mohammad
Hello Mohammad

دستور echo را با سویچ e- وارد کردیم و یک c\ گداشتیم. اگر از کاراکتر های خاص مثل c\ استفاده میکنیم باید e- بگذاریم. با این c\ برنامه تا زمان گرفتن ورودی جلو تر نمی رود. ( به صفحه manual این دستور مراجعه کنید. توضیح بیشترم نمیاد !!! ) با دستور read ورودی را از کاربر گرفته و درون یک متغیر میریزد. در آخر هم یک رشته را با متغیر پر شده توسط کاربر چاپ کردیم.

خوب برویم سراغ روش دوم. به تصویر زیر دقت کنید. وقتی که نام یک اسکریپت را در ترمینال برای اجرا میزنید، عباراتی که جلوی آن مینویسید، حکم آرگومان ارسالی برای برنامه را دارند. به ترتیب از یک این آرگومان ها شماره میگیرند و در برنامه میتوان آنها را استفاده کرد.

آموزش لینوکس : مدیریت سیستم : قسمت 5 : Read User Input

آموزش لینوکس : مدیریت سیستم : قسمت 5 : Read User Input

به قطعه کد زیر دقت کنید، همان سند قبلی را اینطور تغییر دادم:

#!/bin/bash

echo "This is 1st arg: $1"
echo "This is 2nd arg: $2"
echo "This is 3rd arg: $3"
echo "This is 4th arg: $4"
echo "This is 5th arg: $5"
echo "This is 6th arg: $6"

echo "This is Script's name: $0"

exit 0

حالا من 6 تا آرگومان نوشتم، شما بیشتر هم میتونید استفاه کنید. حالا برای پاس دادن مقادیر به برنامه، عبارات را در مقابل نام برنامه وارد میکنیم.

[mohammad@CentOS6 bin]$ hello.sh centos redhat mint kali debian arch
This is 1st arg: centos
This is 2nd arg: redhat
This is 3rd arg: mint
This is 4th arg: kali
This is 5th arg: debian
This is 6th arg: arch
This is Script's name: /home/mohammad/bin/hello.sh
[mohammad@CentOS6 bin]$ 

مطلب بسیار ساده است. سعی کنید برای خود مثال های بیشتری طراحی کنید. حالا بیاید یک نکته ریز را بررسی کنیم. #$ و @$ هر دو مقادیر آرگومانها را نگه میدارند. ولی تفاوت آنها در چیست؟؟ مثال زیر را ببینید. در حقیقت *$ یک single string است. در حالی که #$ یک آرایه ( array ) است.

#!/bin/bash

echo "This is counts of parameters: $#"

echo "Using \"\$*\":"
for a in "$*"; do
    echo ">"$a;
done

echo -e "\nUsing \$*:"
for a in $*; do
    echo ">"$a;
done

echo -e "\nUsing \"\$@\":"
for a in "$@"; do
    echo ">"$a;
done

echo -e "\nUsing \$@:"
for a in $@; do
    echo ">"$a;
done

exit 0

حال اگر به این برنامه ورودی بدهیم:

[mohammad@CentOS6 bin]$ hello.sh one two three "four five" six
This is counts of parameters: 5
Using "$*":
>one two three four five six

Using $*:
>one
>two
>three
>four
>five
>six

Using "$@":
>one
>two
>three
>four five
>six

Using $@:
>one
>two
>three
>four
>five
>six
[mohammad@CentOS6 bin]$ 

فکر میکنم جای توضیح ندارد. فقط از حلقه for استفاده کردم. ساختار for به این صورت است که گفته به ازای تک تک مقادیر #$ یا *$ ، مقدار آنها درون a ریخته شود، درون بدنه for این متغیر a را چاپ کردم. مثلا میتوانید خروجی هر دستوری را وارد حلقه for کنید. مثلا اگر من بزنم `for var in `ls درون حلقه for مقدار متغیر var برابر با هر خط خروجی دستور ls خواهد بود. مثلا اگه بخوام روی همه فایل های یک پوشه کاری انجام بدم از این روش میشه استفاده کرد. منظورم یه همچین چیزیه:

for var in `ls`
do
echo $var
done

مثلا این الان محتوبات داخل مسیر رو نشون میده.

امیدوارم مبحث پیچیده نبوده باشه... منم هیچ "فید بکی" نمیگیرم نمیدونم اصن اینایی که میگم به درد میخوره یا نه ... ولی امیدوارم مفید باشه.

پایان قسمت دوم از بخش دوم

نویسنده : سید محمد باقر موسوی

منبع : جزیره لینوکس و سیستم های متن باز وب سایت توسینسو

هرگونه نشر و کپی برداری بدون ذکر منبع و نام نویسنده دارای اشکال اخلاقی است

#دوره_آموزشی_linux_فارسی #نوشتن_shell_script_در_لینوکس #آموزش_لینوکس_فارسی #آموزش_linux_مقدماتی #آموزش_shell_scripting #آموزش_دستورات_مقدماتی_لینوکس #آموزش_shell_scripting_در_لینوکس #دوره_آموزشی_shell_scripting_در_لینوکس #نوشتن_یک_shell_script_ساده
عنوان
1 آموزش لینوکس : مدیریت سیستم : قسمت 1 : Shell سفارشی : متغیرها رایگان
2 آموزش لینوکس : مدیریت سیستم قسمت 2 : Shell سفارشی : تنظیمات Shell رایگان
3 آموزش لینوکس : مدیریت سیستم : قسمت 3 : Shell سفارشی : Aliases رایگان
4 آموزش لینوکس : مدیریت سیستم : قسمت 4: Shell سفارشی: Login Scripts رایگان
5 آموزش لینوکس : مدیریت سیستم : قسمت 5 : ایجاد اسکریپت رایگان
6 آموزش لینوکس : مدیریت سیستم : قسمت 5 : Read User Input رایگان
7 آموزش لینوکس : مدیریت سیستم : قسمت 6 : IF Statement رایگان
8 آموزش لینوکس : مدیریت سیستم : قسمت 7 : Case Statement رایگان
9 آموزش لینوکس : مدیریت سیستم : قسمت 8 : Loops رایگان
10 آموزش لینوکس : مدیریت سیستم : قسمت 9 : Managing Users رایگان
11 آموزش لینوکس : مدیریت سیستم : قسمت 10 : Managing Groups رایگان
12 آموزش لینوکس : مدیریت سیستم : قسمت 11 : ارتباط با اکتیودایرکتوری رایگان
13 آموزش لینوکس : مدیریت سیستم : قسمت 12 : OpenLDAP رایگان
14 آموزش لینوکس : مدیریت سیستم : قسمت 13 : Cron AnaCron و Batch رایگان
15 آموزش لینوکس : مدیریت سیستم : قسمت 14 : آشنایی با IPTables رایگان
زمان و قیمت کل 0″ 0
0 نظر

هیچ نظری ارسال نشده است! اولین نظر برای این مطلب را شما ارسال کنید...

نظر شما
برای ارسال نظر باید وارد شوید.
از سرتاسر توسینسو
تنظیمات حریم خصوصی
تائید صرفنظر
×

تو می تونی بهترین نتیجه رو تضمینی با بهترین های ایران بدست بیاری ، پس مقایسه کن و بعد خرید کن : فقط توی جشنواره تابستانه می تونی امروز ارزونتر از فردا خرید کنی ....