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

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

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


ارائه ۲۴٫۱۰ اوبونتو منتشر شد 🎉

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

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 در اینجا دقیقا چه کاری انجام میده و کاراکترهای قبل و بعد اون چه کاراکترهایی هستن؟اگر در مورد همین قسمت مورد اشاره مقداری توضیح بدید ممنون میشم

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

  • عضو کاربران ایرانی اوبونتو
  • *
  • ارسال: 1244
  • جنسیت : پسر
  • 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