Es una de varias características de shell, genéricamente llamada shell expansion. Esta expansión particular se llama parámetro expansión *.
Puede pensar en este formulario de expansión de shell en particular como una función de cadena truncado a la izquierda. Debe utilizar las llaves como se muestra (que no es opcional) ..
Cuando se utiliza un solo #
, significa izquierda-truncado solamente la ocurrencia primera del patrón que sigue (hasta el cierre }
. al utilizar dos ##
, significa izquierda-truncar todos Patronistas partidos consecutivos. El resultado de var="a/b/c"; echo ${var#*/}
es b/c
... echo ${var##*/}
vuelve c
.
Hay una complementaria derecha truncar. se utiliza en lugar %
o f el #
... ("recuerdo" que es porque #
es como un comentario bash; siempre a la izquierda).
El *
se trata como una expansión de comodín bash.
Aquí hay una lista de todas las expansiones de shell, presentadas en orden de precedencia.
El orden de las expansiones es:
1. brace expansion ... prefix{-,\,}postfix # prefix-postfix prefix,postfix
.. {oct,hex,dec,bin} # oct hex dec bin
. {a..b}{1..2} # a1 a2 b1 b2
. {1..04} # 01 02 03 04
. {01..4} # 01 02 03 04
. {1..9..2} # 1 3 5 7 9
. \$\'\\x{0..7}{{0..9},{A..F}}\' # $'\x00' .. $'\x7F'
2. tilde expansion .... ~ # $HOME
... ~axiom # $(dirname "$HOME")/axiom
... ~fred # $(dirname "$HOME")/fred
.. ~+ # $PWD (current working directory)
.. ~- # $OLDPWD (previous working directory. If OLDPWD is unset,
~- is not expanded. ie. It stays as-is,
regardless of the state of nullglob.)
# Expansion for Directories in Stack. ie.
# The list printed by 'dirs' when invoked without options
. ~+N # Nth directory in 'dirs' list (from LHS)
. ~-N # Nth directory in 'dirs' list (from RHS)
3. parameter expansion .... ${VAR/b/-dd-}
... ${TEST_MODE:-0}
.. ${str: -3:2} # note space after :
. ${#string}
4. (processed left-to-right)
variable expansion
arithmetic expansion
command substitution
▶5. word splitting # based on $IFS (Internal Field Seperator)
▷6. pathname expansion
according to options such as:
nullglob, GLOBIGNORE, ...and more
# Note: ===============
▶ 5. word splitting ↰
▷ 6. pathname expansion ↰
# ===================== ↳ are not performed on words between [[ and ]]
Se llama [expansión de parámetro] (http://www.gnu.org/software/bash/manual/bash.html#Shell-Parameter-Expansion). El enlace también explica "cómo funciona", es decir, describe lo que hace. ¿O tienes una pregunta más específica al respecto? –