O que é esse tipo de análise? [duplicado]

1

O que é esse tipo de análise de argumentos?

$RES="${SOME_VAR##foo/}"  
    
por Jim 05.09.2017 / 09:31

2 respostas

1

${SOME_VAR##foo/} - bash substituição de variáveis.

Ele procura correspondência com o padrão foo/ do início da sequência ( SOME_VAR do valor da variável) e trunca a parte esquerda incluindo o padrão.

Exemplo:

s="foo/some#foo#textfoo/textlast"
echo ${s##foo/}
some#foo#textfoo/textlast

Observação , esse ${s##foo/} é equivalente a ${s#foo/} , pois procura somente pela primeira ocorrência do padrão foo/ desde o início da string .

Embora esse ${s##*foo/} truncará a parte esquerda até o último padrão de correspondência (inclusive)

echo ${s##*foo/}
textlast
    
por 05.09.2017 / 09:38
0

De acordo com man bash :

Parameter Expansion
The '$' character introduces parameter expansion, command substitution, or arithmetic expansion. The parameter name or symbol to be expanded may be enclosed in braces, which are optional but serve to protect the variable to be expanded from characters immediately following it which could be interpreted as part of the name.

${parameter#word}
${parameter##word}
Remove matching prefix pattern.
The word is expanded to produce a pattern just as in pathname expansion. If the pattern matches the beginning of the value of parameter, then the result of the expansion is the expanded value of parameter with the shortest matching pattern (the ''#'' case) or the longest matching pattern (the ''##'' case) deleted. If parameter is @ or *, the pattern removal operation is applied to each positional parameter in turn, and the expansion is the resultant list. If parameter is an array variable subscripted with @ or *, the pattern removal operation is applied to each member of the array in turn, and the expansion is the resultant list.

    
por 05.09.2017 / 09:38

Tags