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