انجمن‌های فارسی اوبونتو

لطفاً به انجمن‌ها وارد شده و یا جهت ورود ثبت‌نام نمائید

لطفاً جهت ورود نام کاربری و رمز عبورتان را وارد نمائید

اوبونتو ۲۰.۰۴ منتشر شد.
انتظار می‌ره همهٔ اعضا هرچه زودتر به این نگارش ارتقا پیدا کنند. همهٔ پاسخ‌ها از این به بعد، بر پایهٔ اوبونتو ۲۰.۰۴ خواهد بود.

نویسنده موضوع: خروجی قطعه کد زیر در بش  (دفعات بازدید: 455 بار)

0 کاربر و 1 مهمان درحال مشاهده موضوع.

آفلاین Mr-virus

  • Full Member
  • *
  • ارسال: 136
  • جنسیت : پسر
خروجی قطعه کد زیر در بش
« : 30 آذر 1397، 12:59 ق‌ظ »
سلام دوستان.بنده در حال سرچ در مورد یک مطلبی بودم که با این اسکریپت مواجه شدم.
#!/bin/bash

# Call this script with at least 10 parameters, for example
# ./scriptname 1 2 3 4 5 6 7 8 9 10
MINPARAMS=10

echo

echo "The name of this script is \"$0\"."
# Adds ./ for current directory
echo "The name of this script is \"`basename $0`\"."
# Strips out path name info (see 'basename')


echo

if [ -n "$1" ]              # Tested variable is quoted.
then
 echo "Parameter #1 is $1"  # Need quotes to escape #
fi

if [ -n "$2" ]
then
 echo "Parameter #2 is $2"
fi

if [ -n "$3" ]
then
 echo "Parameter #3 is $3"
fi

# ...


if [ -n "${10}" ]  # Parameters > $9 must be enclosed in {brackets}.
then
 echo "Parameter #10 is ${10}"
fi

echo "-----------------------------------"
echo "All the command-line parameters are: "$*""

if [ $# -lt "$MINPARAMS" ]
then
  echo
  echo "This script needs at least $MINPARAMS command-line arguments!"
fi 

echo

exit 0

همه چیز مفهوم هست جز این قسمت:
echo "The name of this script is \"`basename $0`\"."
قسمت basename در اینجا دقیقا چه کاری انجام میده و کاراکترهای قبل و بعد اون چه کاراکترهایی هستن؟اگر در مورد همین قسمت مورد اشاره مقداری توضیح بدید ممنون میشم

آفلاین علی رزم دیده

  • عضو کاربران ایرانی اوبونتو
  • *
  • ارسال: 1240
  • جنسیت : پسر
  • ali76 سابق
پاسخ : خروجی قطعه کد زیر در بش
« پاسخ #1 : 30 آذر 1397، 11:09 ق‌ظ »
سلام

دستور echo مقدار The name of this script is \"`basename $0`\". رو به نمایش می ذاره.

پس در واقع خروجی به صورت زیر باید باشه :
The name of this script is "xxxx".
که به جای xxxx مقدار basename $0 قرار می گیره.

دستور basename در واقع اسم فایل رو بدون نمایش مسیر و پسوند به نمایش درمیاره :

strip directory and suffix from filenames
Print  NAME with any leading directory components removed.  If specified, also
remove a trailing SUFFIX.

برای مثال :
basename ~/Desktop/firefox.desktop
firefox.desktop

basename ~/Desktop/firefox.desktop .desktop
firefox

و مقدار $0 هم به مقدار اسم شل یا اسکریپت بر می گرده :
برای مثال :
./script.sh
./script.sh

echo $0
/bin/bash

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

./script.sh
script.sh

basename $0
bash