Como imprimir o índice em um 'for-loop' sendo executado no host remoto através do SSH?

0

Eu quero ssh em um host remoto e, em seguida, executar um loop for que passa pela seqüência de números para controlar o número de nós diferentes.

ssh user@host /bin/bash << EOF
for i in {1..10}
do
echo $i
done
EOF

Se eu fizer isso, a saída será de apenas 10 linhas em branco, em vez de imprimir números de 1 a 10.

Se eu executar o mesmo código em minha máquina local, obtenho a saída desejada, que é de dez linhas, cada linha imprimindo de 1 a 10.

Como alguém alcançaria a funcionalidade pretendida, ou seja, acessando o índice em um loop que está sendo executado no SSH?

    
por YShin 20.08.2014 / 23:10

1 resposta

1

Do manual do bash :

Here Documents
The format of here-documents is:

<<[-]word
        here-document
delimiter

[...] If any characters in word are quoted, the delimiter is the result of quote removal on word, and the lines in the here-document are not expanded. If word is unquoted, all lines of the here-document are subjected to parameter expansion, command substitution, and arithmetic expansion.

Vamos tentar:

$ i='Howdy!'
$ ssh user@localhost /bin/bash << EOF
for i in {1..10}
do
echo $i
done
EOF
Howdy!
Howdy!
Howdy!
Howdy!
Howdy!
Howdy!
Howdy!
Howdy!
Howdy!
Howdy!
$ ssh user@localhost /bin/bash << 'EOF'
for i in {1..10}
do
echo $i
done
EOF
1
2
3
4
5
6
7
8
9
10
$
    
por 20.08.2014 / 23:25

Tags