difficalty para salvar a saída do traceroute na variável shell?

0

Eu preciso filtrar e armazenar traceroute output na variável shell (array). Mas estou conseguindo alguma saída incomum.

Como eu tento explicar nas linhas seguintes.

Meu diretório atual é temp , tendo alguns arquivos:

/temp$ ls 
ask.html  data_dump (2)  DB-Assignemnt .sql    

Quando executo traceroute na linha de comando, sua saída está correta conforme desejado.

/temp$ traceroute -m 5 www.google.com  | awk '{print  $2 , $3}'
to www.google.com
172.22.0.1 (172.22.0.1)
ABTS-North-Static-085.3.160.122.airtelbroadband.in (122.160.3.85)
* *
203.101.83.197 (203.101.83.197)
182.79.254.249 (182.79.254.249

Se eu salvar a saída em uma variável a

/temp$ a=$(traceroute -m 5 www.google.com | awk '{print $2 , $3}')

Quando eu echo $a A saída não é compreendida para mim.

~/temp$ echo $a
to www.google.com 172.22.0.1 (172.22.0.1) ABTS-North-Static-
085.3.160.122.airtelbroadband.in (122.160.3.85) ask.html data_dump (2) DB-Assignemnt .sql ask.html data_dump (2) DB-Assignemnt .sql ask.html data_dump (2) DB-Assignemnt .sql ask.html data_dump (2) DB-Assignemnt .sql
203.101.100.186 (203.101.100.186)

Por que ls se executou e a entrada está salva na variável a .

    
por Grijesh Chauhan 15.12.2012 / 19:06

1 resposta

2

Quando você echo $a , o shell faz "divisão de palavras" e todos os espaços em branco significativos são perdidos.

Teste echo "$a" com aspas duplas.

As citações também garantem que a expansão do nome do arquivo não ocorra.

Veja o link

    
por 15.12.2012 / 19:16