Dash imprime comandos expandidos

0

Executar xtrace ou set -x com o Bash imprimirá o comando expandido:

$ bash -xc 'touch "alfa bravo"'
+ touch 'alfa bravo'

No entanto, o Dash não imprime o comando que é realmente executado:

$ dash -xc 'touch "alfa bravo"'
+ touch alfa bravo

O comando impresso parece criar 2 arquivos, enquanto o comando realmente cria 1. O Dash pode ser feito para imprimir os comandos que são realmente executados?

    
por Steven Penny 09.03.2016 / 03:20

1 resposta

0

Esta é uma solução bem ruim, mas parece fazer o truque:

BEGIN {
  w = ""
  while (++i < ARGC) {
    x = split(ARGV[i], y, w)
    for (each in y) {
      if (y[each] ~ /[^[:alnum:]%+,./:=@_-]/)
        printf w y[each] w
      else
        printf y[each]
      if (each < x)
        printf "\" w
    }
    if (i == ARGC - 1)
      printf RS
    else
      printf FS
  }
}

Resultado:

$ awk -f charlie.awk touch "alfa bravo"
touch 'alfa bravo'

$ awk -f charlie.awk touch 'alfa"bravo'
touch 'alfa"bravo'

$ awk -f charlie.awk touch "alfa'bravo"
touch alfa\'bravo
    
por 09.03.2016 / 05:30

Tags