Variável de script Bash ignorando a saída

2

Eu corro um comando na linha de comando e funciona bem. Eu adicionei o mesmo comando para um script bash e ele corta a saída. Eu me certifiquei de que as citações estão corretas e não consigo ver onde estou indo errado.

Este é o comando quando o executo manualmente:

./ciscocmd -u username -p password -s passwowrd -t 192.168.1.1 -c "show mac address-table address 34e6.xxxx.xxxx"

e mostra

Processing... 192.168.1.1
switch#show mac address-table address 34e6.xxxx.xxxx
Mac Address Table
-------------------------------------------

Vlan    Mac Address       Type        Ports
----    -----------       --------    -----
10    34e6.xxxx.xxxx    DYNAMIC     Gi0/2
Total Mac Addresses for this criterion: 1

Isso está no script:

portis='./ciscocmd -u username -p password -s passwowrd -t 192.168.1.1 -c "show mac address-table address 34e6.xxxx.xxxx"'
echo $portis

mas ainda gera isto

[root@server]# ./test.sh
switch#ddresses for this criterion: 1--4e6.xxxx.xxxx
[root@server]#

Eu devo estar perdendo alguma coisa. Eu tentei duplo "" e "" para cercar o endereço MAC, mas não está funcionando.

Alguma sugestão?

    
por Spoon 25.08.2016 / 11:44

1 resposta

3

  1. não use echo para dados arbitrários
  2. cite suas variáveis

Então:

printf '%s\n' "$portis"
  1. Evite '...' . Use $(...) em vez disso.
por 25.08.2016 / 12:05