تعريف متغير در لينوکس

ژانویه 18, 2016

در لينوکس ما متغير داريم و ميتوانيم به راحتي به آن مقدار دهيم : [N.pardis@Lpi1~]$ x=2 سرور اختصاصی براي اينکه مقدار يک مت ير يا محتويا يک مت ير را ببينيم از echo استفاده ميکنيم و جلوي اسم مت ير علامت $ قرار ميدهيم که مقدار آن را در نظر بگيرد نه اينکه اسم متغير را بنويسد: [N.pardis@Lpi1~]$echo $x دستور زير مقدار مت ير x را در t ميريزد. [N.pardis@Lpi1~]$ echo t=$x براي اينکه يک عبار را در کنار مقدار مت ير چاپ کند به اين صور مينويسيم: [N.pardis@Lpi1~]$ echo ${x}aictc عبارتمت ير read براي خواندن اطلاعا در لينوکس فرمان read را داريم که به وسيلهيفرمان type ميفهميم که يک دستور builtin ميباشد: [N.pardis@Lpi1~]$ type read read is a shell builtin. وقتيفرمان read و سپس نام مت ير را وارد مي نماييد [N.pardis@Lpi1~]$ Read NAME اسم مت ير سپس منترر ميماند تا شما اطلاعاتي را وارد کنيد و به عنوان مثال zahra را وارد ميکنيم . وقتي echo کنيم ميبينيم که مقدار مت ير را براي ما مينويسد. )توصيه ميشود اسامي مت يرها را بزرگ بنويسيد( [N.pardis@Lpi1~]$ echo $NAME zahra اطلاعا بيشتر از فرمان read را مي توان با فرمان help read مشاهده نمود.فرمانهاي builtin فقط help دارند. [N.pardis@Lpi1~]$ help Read با توجه به help فرمان read کاري کنيد اگر فرمان Read بعد از 5 ثانيه جواب نداديد time out بدهد و خارج شود: [N.pardis@Lpi1~]$ Read –t5 NAME چه کاري انجام دهيم تا اسم را بيشتر از سه حرف نگيرد؟ [N.pardis@Lpi1~]$ read –n3 NAME در Read اگر اسم مت ير را وارد نکنيد error نميدهد و پيشفرض اسم reply ميگذارد. حالا ميخواهيم که اسم بيشتر از 3 حرف نگيرد و time out 7 ثانيه باشد. [N.pardis@Lpi1~]$read-n3 –t7 name اسم مت ير p در فرمان – read به ما prompt ميدهد: [N.pardis@Lpi1~]$ read -p “PLZ ENTER UR NAME:”–t7 -n14 NAME اگر فرمان زير را بزنيم بعد از مد ثانيهاي که در آن مشخص ميکنيم خط قطع ميشود که اين فرمان براي کنترل و ک ار ک ردن کاربران مناسب است. بعد از 15 ثانيه خط قطع ميشود )با حروف بزرگ(  =15 TMOUT با يک خط برنامهاي بنويسيد که يک اسم را بخواند و حرف اوّل آن را چاپ کند؟ [N.pardis@Lpi1~]$ read -p “ENTER UR NAME:” -t 7 -n3 NAME; echo $NAME |cut-c1 ENTER UP NAME: pardis p [N.pardis@Lpi1~]$ read –p “ENTER NAME:” –t 7 -n 14 NAME;echo $NAME > /tmp/a; cut-c1/tmp/a ولي توصيه ميشود هرگز از اين روش استفاده نکنيد و current directory خود را با فايلهايمتفرقه پر نکنيد. برنامهاي بنويسيد که اسمي را بخواند و حرف آخر آن را چاپ کند؟ [N.pardis@Lpi1~]$ read -p “ENTER Name:” –t 7 -n 14 NAME;echo $ NAME |tail -c2 حرف آخر اسم مورد نرر ما s است از آخر حرف دوم است چون Enter هم که بع د از اس م وارد ک رد يم ه م ي ک ک اراکتر حساب ميشود. دليل اينکه 0 مينويسيم به اين خاطر است که اگر مثلاً کلمه Hello را ما به echo بدهيم و بگوييم octal dump آن را ب ه م ا بدهد به اين صور جواب ميدهد: [N.pardis@Lpi1~]$ echo hello |od -c 0000000 h e l l o \n \n هم که enter است يکي حساب ميشود. از طريق فرمان od مي توانيم هر کليدي که در اين فرمان وارد کنيم od آن را به ما نشان ميدهد [N.pardis@Lpi1~]$ read a; echo $a |od–c [N.pardis@Lpi1~]$ read a b Najibeh pardis [N.pardis@Lpi1~]$ echo $a Najibeh هميشه اولين داده ورودي تا قبل از space را ميدهد به اوّلين مت ير و دوّمين ورودي و هر چه که باز هم بعد از space ميزنيم را به همان b که مت ير دوّم است ميدهد. و اگر تعداد داده ورودي کمتر بود مت ير آخري چيزي گيرش نميآيد.