ایستگاه های کاری آنلاین OnWorks Linux و Windows

لوگو

میزبانی آنلاین رایگان برای ایستگاه های کاری

<قبلی | فهرست | بعدی>

یک برنامه کامل تر

پس از یک وقفه طولانی، ما می خواهیم کار خود را از سر بگیریم sys_info_page برنامه افزودنی بعدی ما چندین گزینه خط فرمان را به شرح زیر به برنامه اضافه می کند:

فایل خروجی. ما یک گزینه برای تعیین نام برای فایلی که حاوی خروجی برنامه باشد اضافه می کنیم. به عنوان یکی مشخص خواهد شد -f پرونده or --فایل پرونده.

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

راهنما در هر -h or --کمک ممکن است مشخص شود که باعث شود برنامه یک پیام استفاده آموزنده را خروجی دهد.

در اینجا کد مورد نیاز برای اجرای پردازش خط فرمان است:



استفاده () {

پژواک "$PROGNAME: استفاده: $PROGNAME [-f فایل | -i]" بازگشت

}

# گزینه های خط فرمان پردازش تعاملی=

استفاده () {

پژواک "$PROGNAME: استفاده: $PROGNAME [-f فایل | -i]" بازگشت

}

# گزینه های خط فرمان پردازش تعاملی=


نام فایل =


در حالی که [[ -n $1 ]]; مورد 1 دلار را انجام دهید

-f | --فایل)

تغییر

نام فایل = $1

;;

نام فایل =


در حالی که [[ -n $1 ]]; مورد 1 دلار را انجام دهید

-f | --فایل)


-i | --interactive) interactive=1

;;

-h | --help) خروج از استفاده

;;

*) استفاده >&2

خروج 1

;;

-i | --interactive) interactive=1

;;

-h | --help) خروج از استفاده

;;

*) استفاده >&2

خروج 1

;;


که C

شیفت انجام شد

که C

شیفت انجام شد


تصویر

ابتدا یک تابع پوسته به نام اضافه می کنیم استفاده برای نمایش یک پیام در هنگام فراخوانی گزینه کمک یا تلاش برای گزینه ناشناخته.

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

$1 خالی نیست. در انتهای حلقه، ما یک فرمان shift برای پیشبرد پارامترهای موقعیت داریم تا اطمینان حاصل کنیم که حلقه در نهایت خاتمه می یابد.

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

La -f پارامتر به روش جالبی مدیریت می شود. هنگامی که تشخیص داده می شود، باعث اضافه شدن می شود تغییر رخ می دهد، که پارامتر موقعیتی را پیش می برد $1 به آرگومان filename ارائه شده به -f گزینه.

سپس کد را برای پیاده سازی حالت تعاملی اضافه می کنیم:



# حالت تعاملی


اگر [[ -n $interactive ]]; سپس در حالی که درست است. انجام دادن

read -p "نام فایل خروجی را وارد کنید: " نام فایل اگر [[ -e $filename ]]; سپس

read -p "'$filename' وجود دارد. بازنویسی شود؟ [y/n/q] > " case $REPLY در

Y|Y) شکستن

# حالت تعاملی


اگر [[ -n $interactive ]]; سپس در حالی که درست است. انجام دادن

read -p "نام فایل خروجی را وارد کنید: " نام فایل اگر [[ -e $filename ]]; سپس

read -p "'$filename' وجود دارد. بازنویسی شود؟ [y/n/q] > " case $REPLY در

Y|Y) شکستن


;;

Q|q) echo "برنامه پایان یافت." خروج

;;

*) ادامه هید

;;

که C

elif [[ -z $filename ]]; سپس ادامه دهید

دیگر

شکستن

fi

انجام شده

fi

;;

Q|q) echo "برنامه پایان یافت." خروج

;;

*) ادامه هید

;;

که C

elif [[ -z $filename ]]; سپس ادامه دهید

دیگر

شکستن

fi

انجام شده

fi


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

برای پیاده سازی ویژگی نام فایل خروجی، ابتدا باید کدهای صفحه نویسی موجود را به یک تابع پوسته تبدیل کنیم، به دلایلی که در یک لحظه مشخص می شود:



write_html_page () { cat <<- _EOF_

$TITLE

$TITLE

$TIMESTAMP

$(report_uptime)

$(report_disk_space)

$(report_home_space)

_EOF_ بازگشت

}


# خروجی صفحه html


اگر [[ -n $filename ]]; سپس

write_html_page () { cat <<- _EOF_

$TITLE

$TITLE

$TIMESTAMP

$(report_uptime)

$(report_disk_space)

$(report_home_space)

_EOF_ بازگشت

}


# خروجی صفحه html


اگر [[ -n $filename ]]; سپس


اگر $filename && [[ -f $filename ]] را لمس کنید. سپس write_html_page > $filename

دیگر

echo "$PROGNAME: نمی توان فایل "$filename" را نوشت" >&2 خروج 1

فی دیگری

write_html_page

fi

اگر $filename && [[ -f $filename ]] را لمس کنید. سپس write_html_page > $filename

دیگر

echo "$PROGNAME: نمی توان فایل "$filename" را نوشت" >&2 خروج 1

فی دیگری

write_html_page

fi


کدی که منطق را کنترل می کند -f گزینه در انتهای لیست نشان داده شده در بالا ظاهر می شود. در آن، وجود یک نام فایل را آزمایش می کنیم و در صورت یافتن نام فایل، آزمایشی انجام می شود تا ببینیم آیا فایل واقعاً قابل نوشتن است یا خیر. برای انجام این کار، الف لمس انجام می شود و به دنبال آن آزمایشی برای تعیین اینکه آیا فایل به دست آمده یک فایل معمولی است یا خیر. این دو تست موقعیت‌هایی را که در آن یک نام مسیر نامعتبر وارد شده است (لمس شکست خواهد خورد)، و اگر فایل از قبل وجود داشته باشد، یک فایل معمولی است.

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


برترین سیستم عامل Cloud Computing در OnWorks: