مشکل در نوشتن یه اسکریپت
|
2007-09-16, 07:19 PM,
ارسال : #1
|
|||
|
|||
مشکل در نوشتن یه اسکریپت
سلام
من تازه اسکریپت نویسی رو شروع کردم لطفا منو توی پیدا کردن اشکال این قطعه کد کمک کنید: کد : cu_y=$(date +"%Y"); کد : ./your_age.sh: line 27: [: missing `]' |
|||
2007-09-16, 07:22 PM,
ارسال : #2
|
|||
|
|||
پاسخ: مشکل در نوشتن یه اسکریپت
ضمنا من خیلی کروشه و پرانتر ووو رو تغییر دادم ولی همیشه ارور میگیره دیگه خسته شدم
|
|||
2007-09-16, 07:28 PM,
ارسال : #3
|
|||
|
|||
پاسخ: مشکل در نوشتن یه اسکریپت
وقتی هم که دور اون قسمتهای condition دستورات پرانتز گذاشتم ارورها کمتر شد ولی هنوز ارور داره:
کد : ./your_age.sh: line 28: syntax error near unexpected token `date' |
|||
2007-09-17, 08:20 AM,
ارسال : #4
|
|||
|
|||
پاسخ: مشکل در نوشتن یه اسکریپت
ببینید این همون نتیجهای که میخواید رو میده؟:
کد : cu_y=$(date +"%Y"); کد : cu_y=`date +"%Y"` کد : if [ \( `date +%m` -eq 2 -a `date +%d` > 20 \) -o `date +%m` > 2 ] ; then http://wiki.hezardastan.org/ArticleList موفق باشید StarCalendar | Blog | 1+ | OS |
|||
2007-09-19, 01:09 AM,
ارسال : #5
|
|||
|
|||
پاسخ: مشکل در نوشتن یه اسکریپت
ممنون ilius جان خیلی کمک کردی
البته من میخواستم از روی راهنمای سریع سینتکسش این کار رو بکنم اون && || هم نوشته بود که AND و OR منطقی واسه همین استفاده کردم فکر کنم توی منوال test هم نوشته. یه سوال اونم اینکه: من میخوام یه دایروکتوری به اسم .bin توی دایرکتوری خونگیم داشته باشم خوب باید به .bash_profile اضافه بشه من دو شکل رو امتحان کردم: یک) PATH=~/.bin:/usr/bin و.... توی همون فایل دو) تغییر اون عبارت شرطی و عوض کردن bin با .bin که چک میکنه ببینه این دایرکتوری هست و اضافه ش میکنه ولی در هر دو صورت وقتی دستور export $path رو میزنم اون دایرکتوری توش نیست و کلا اسکریپتهای داخل اون دایرکتوری رو اجرا نمیکنه در حالیکه مجوز اجرائي نداره فایل .bashrc هم خوندم چیزی که به نظرم مربوط باشه پیدا نکردم حتی داکیومنها و مثالهای داخل /ur/share/doc/bash/example رو هم خوندم ولی هیچی................ اینم اون کد: کد : # set PATH so it includes user's private bin if it exists |
|||
2007-09-19, 01:16 AM,
ارسال : #6
|
|||
|
|||
پاسخ: مشکل در نوشتن یه اسکریپت
ببخشین پشت سر هم سوال میدم یه سوال دیگه هم دارم در واقع یه نظر مشورتی میخوام اینجور که تا حالا که یه روزی هست با شل اسکریپت کار میکنم دو شکل اصل مقداردهی به متغیر وقتی یه متغیر رو فراخوانی میکنیم داریم:
کد : val=$(($y*365+($m-1)*30+$d)) ; کد : let val=$y*365+$(($m-1))*30+$d ; . . این درسته؟ اگه اینجوریه خوب یکم شل اسکریپت زبان حرافی به نظر میاد واسه یه مقدار دهی ساده کلی باید پرانتز و... گذاشت به نظر دست و پا گیر میاد شل اسکریپت فقط با این نوع استاندارد شده و انواع دیگه نداره؟ که یه مفسر هوشمندتر داشته باش؟ |
|||
2007-09-19, 04:23 PM,
ارسال : #7
|
|||
|
|||
پاسخ: مشکل در نوشتن یه اسکریپت
قابلی نداشت.
اما چرا لوگین نکرده بودید؟! سوال اولتون رو دقیقا متوجه نشدم. خب وقتی شما اون کد کد : if [ -d ~/.bin ] ; then [ltr]~/.bashrc[/ltr]اضافه کنید. بعد هر ترمینال جدیدی که باز کنید، اون دستور رو اجرا میکنه و اگه پوشهٔ bin. وجود داشته باشه به PATH اضافه میکنه.طبیعتا توی ترمینالهایی که قبلش باز کرده بودید تاثیری نمیذاره مگه اینکه اون فایل رو مجوز اجرا بهش بدید و بعد اجراش کنید. ولی راحتترید که ترمینال رو ببندید و دوباره باز کنید. یا اینکه بنویسید bash و اینتر تا یه پوستهٔ جدید شروع به کار کنه و اون فایل bashrc. رو بخونه. اما سوال دوم . به اون دستور let که توی پست اولم نوشتم دقت نکردید. نیازی به $ نیست. از پرانتز هم فقط برای مشخص کردن ترتیب عملیات استفاده کنید که البته قبلش باید یه بکاسلش بذارید. کد : let val=y*365+\(m-1\)*30+d کد : val=$[y*365+(m-1)*30+d] درسته که بعضی کارا توی شل یه خرده سختتر از C یا زبانهای دیگه هست. اما خب شل کاربردش با اون زبانها فرق داره. دلیل نمیشه که شل هوشمند نباشه. من و شما تا به شل کاملا تسلط پیدا نکنیم نمیتونیم دربارهٔ خوب بودن یا نبودن syntax ش نظر بدیم. مثلا شل چون بیشتر با رشتهها سر و کار داره پس رشتههایی که فاصله(Space) نداشته باشن رو میشه بدون کوتیشن بکار برد(بر خلاف C). پس باید برای خوندن متغیرها مشخص بشه که اسم متغیر هست نه رشتهٔ ثابت. که شل از $ برای این منظور استفاده میکنه. امیدوارم منظورم رو خوب رسونده باشم! StarCalendar | Blog | 1+ | OS |
|||
2007-09-20, 06:39 PM,
ارسال : #8
|
|||
|
|||
پاسخ: مشکل در نوشتن یه اسکریپت
بازم ممنون که حوصله میکنی و جواب میدی
راجع به لاگین اون موقع نتونستم لاگین کنم یعنی به خاطر مسائل امنیتی نخواستم لاگین کنم (سیستم خودم نبود)..... فکر کنم همه سوالامو جواب دادی ممنون خوب راجع به let حق با شماست..... کلا بعد از اینکه مقاله سایت هزاردستان رو که معرفی کرده بودین و یه مقاله از آلن (پنج قسمتی) راجع به خط فرمان لینوکس بود خوندم الان کلا دیدم عوض شد یعنی بهتر معنای اون سینتکس ها رو میفهم منم آشنائيم با برنامه نویسی و مفاهیمش فقط در حد یه درس سه واحدی بود که پاس کردم که همونجوری که حدس زده بودین سی بود........خیلی خوش گذشت یادش به خیر. ضمنا اینم میدونم که هر زبانی کاربرد خاص خودشو داره و شل اسکریپت واسه ساختن اپلیکیشن نیست.یا یه نرم افزار ریاضی چون نمیشه مستقیم و راحت با اعداد حقیقی کار کرد. و دیگه اینکه به نظر میاد شل اسکریپت به خاطر توسعه و اتوماسیون همون شل به وجود آمده..... بهرحال شل اسکریپت خیلی مفید و کاربردیه به خصوص که وقتی میخوایم با لینوکس کار کنیم و از قدرتش لذت ببریم یکی از همون نقاط قوتش همینه. ممنون شما با راهنماییاتون خیلی کمک کردین. |
|||
2007-09-20, 06:46 PM,
ارسال : #9
|
|||
|
|||
پاسخ: مشکل در نوشتن یه اسکریپت
اینم برنامه ای که نوشتم.
فقط وقت دیگه حوصله نکردم اون let ها رو درست کنم. کد : #!/bin/bash |
|||
|