LINUX

آموزش لینوکس

LINUX

آموزش لینوکس

LINUX

این وبلاگ به بحث پیرامون لینوکس و امنیت و زبان برنامه نویسی تحت لینوکس می پردازد.

طبقه بندی موضوعی

متغیرهای اختصاصی در bash

جمعه, ۶ تیر ۱۳۹۳، ۰۸:۴۴ ب.ظ
در بخش قبل به توضیحی درباره متغیرها پرداختم و الان میخوام به بررسی متغیرهای مخصوصی در زبان bash بپردازم.
برای مثال اگر میخواین pid شل که در حال اجراست رو در بیارید میتونید به صورت زیر عمل کنید:
$ echo $$
29949

حالا میخوام به توضیح مختصری در باره این نوع متغیرها بپردازم و در انتها هم یک مثال براتون بیارم:
- $0 : نام اسکریپتی که در حال نوشتن اون هستید رو نمایش میده:
- n$ : در این جا شما میتونید به جای n مقدار عددی مثبت رو قرار بدید. مثلا 1$ بیانگر پارامتر اولی هست که به اسکریپت میدید و ....
- #$ : این علامت بیانگر تعداد پارامترهایی هست که این اسکریپت نیاز داره تا با اون ها اجرا بشه. یا تعداد پارامترهایی که اسکریپت با اون اجرا شده.
- *$ : تمام پارامتر ها رو به نمایش میذاره
- @$ : این هم مانند قبل همه پارامتر ها رو نشون میده
- ?$ : این متغیر وضعیت خروج آخرین دستور زده شده رو به صورت یک عدد به شما نمایش میده. مثلا اگر دستور آخری که اجرا کردید موفقیت آمیز بوده و صحیح بده مقدار 0 رو بر میگردونه و اگر دستور یا اسکریپت با موفقیت به اجرا در نیامد مقدار 1- را بر میگرداند
- $$ : شماره پراسه شل در حال اجرا یا شلی که در اون هستید رو بر میگردونه
- !$ : شماره پراسه آخرین دستوری که در background اجرا شده رو نمایش میده

آرگومان های command-line
اگر این بخش رو با یک مثال براتون توضیح بدم حتما بهتر متوجه میشید. به اسکریپت زیر دقت کنید. این اسکریپت قراره پارامترهای ورودی به خودش رو که دو تا هم هستند و با 1$ و 2$ مشخص میشن رو صدا بزنه:
#!/bin/sh
echo "File Name: $0"
echo "First Parameter : $1"
echo "First Parameter : $2"
echo "Quoted Values: $@"
echo "Quoted Values: $*"
echo "Total Number of Parameters : $#"

حالا اگر اسکریپ بالا به صورت زیر اجرا بشه خروجی که در ادامه خواهید دید براتون نمایش داده میشه:
$ ./test.sh Triumph Linusec
File Name : ./test.sh
First Parameter : Triumph
Second Parameter : Linusec
Quoted Values: Triumph Linusec
Quoted Values: Triumph Linusec
Total Number of Parameters : 2

پارامتر های *$  و @$
این پارامتر ها تا وقتی که درون " "  قرار نگیرند مانند یکدیگر عمل میکنند. ولی اگر آن ها را درون " " قرار بدهید اگر از "*$" استفاده کنید همه پارامتر ها را به صورت خطی بعنوان یک آرگومان در نظر میگیرد ولی اگر  از "@$" استفاده کنید هر آرگومان را به صورت جدا در نظر میگیرد. به دو مثال زیر  و خروجی آنها توجه کنید:
مثال یک:
#!/bin/bash
for arg in "$*"; do
echo $arg
done
=======
$ ./test.sh arg1 arg2 arg3 arg4
arg1 arg2 arg3 arg4

مثال دو:
#!/bin/bash
for arg in "$*"; do
echo $arg
done
=======
$ ./test.sh arg1 arg2 arg3 arg4
arg1
arg2
arg3
arg4


وضعیت خروج
این متغیر وضعیت خروج آخرین دستور زده شده رو به صورت یک عدد به شما نمایش میده. مثلا اگر دستور آخری که اجرا کردید موفقیت آمیز بوده و صحیح بده مقدار 0 رو بر میگردونه و اگر دستور یا اسکریپت با موفقیت به اجرا در نیامد مقدار 1- را بر میگرداند. بعنوان مثال:
$ ./test.sh Triumph Linusec
File Name : ./test.sh
First Parameter : Triumph
Second Parameter : Linusec
Quoted Values: Triumph Linusec
Quoted Values: Triumph Linusec
Total Number of Parameters : 2

سپس اگر:
$ echo $?
0

نظرات  (۰)

هیچ نظری هنوز ثبت نشده است

ارسال نظر

ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی