Onde posso encontrar documentação sobre a sintaxe do script de shell para usar um regex em uma construção de variável?

1

Estou depurando um script de shell (que eu não escrevi) que contém este loop:

read line < "$pid_file"
for p in $line ; do
  [ -z "${p//[0-9]/}" -a -d "/proc/$p" ] && pid="$pid $p"
done

Alguém pode me indicar a documentação sobre o uso (o que eu estou assumindo) é uma expressão regular dentro de uma construção de variável de cadeia, ou seja, o "$ {p // [0-9] /}". Este tópico não é fácil de restringir no Google.

    
por Alan 21.01.2014 / 00:47

1 resposta

1

Esta é uma forma de expansão de parâmetros (ou seja, expansão variável ) com uma transformação de texto do valor da variável. O valor da variável p é submetido à substituição do padrão [0-9] pela cadeia vazia onde quer que ocorra - em outras palavras, "${p//[0-9]/}" é o valor de p sem seus caracteres de dígitos.

Na documentação do bash, você encontrará em ${parameter/pattern/string} . Este formulário substitui a primeira ocorrência do padrão especificado pela string especificada. Se a primeira barra for duplicada, todas as ocorrências serão substituídas. O padrão é uma glob , ou seja, os mesmos padrões de curinga da correspondência de nomes de arquivos.

    
por 21.01.2014 / 00:56