Issue
I just saw some code in bash that I didn't quite understand. Being the newbie bash scripter, I'm not sure what's going on.
echo ${0##/*}
echo ${0}
I don't really see a difference in output in these two commands (prints the script name).  Is that # just a comment?  And what's with the /*.  If it is a comment, how come it doesn't interfere with the closing } brace?  
Can anyone give me some insight into this syntax?
Solution
See the section on Substring removal on the parameter expansion page of the bash-hackers' wiki:
${PARAMETER#PATTERN}and${PARAMETER##PATTERN}This form is to remove the described pattern trying to match it from the beginning of the string. The operator
#will try to remove the shortest text matching the pattern, while##tries to do it with the longest text matching.Example string (just a quote from a big man):
MYSTRING="Be liberal in what you accept, and conservative in what you send"
Syntax Result ${MYSTRING#*in}Be liberal inwhat you accept, and conservative in what you send.${MYSTRING##*in}Be liberal in what you accept, and conservative inwhat you send.
Answered By - Mark Byers Answer Checked By - Cary Denson (PHPFixing Admin)
0 Comments:
Post a Comment
Note: Only a member of this blog may post a comment.