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
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
.
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