For Loop não imprimindo o resultado requerido

1

Estou tentando usar o loop no meu script.

Eu tenho ssh em um servidor e movido para o respectivo diretório. Dentro o diretório eu tenho vários arquivos.

Eu queria fazer um loop em cada arquivo.

os arquivos começam com um nome particular ff

ssh -q [email protected]  << EOF
cd /var/dist/s-test/
NAME=ff
echo ${NAME}*   // this is working

for a in ${NAME}*;  // this is not working
do
echo  $a
done

EOF
    
por Sherry 27.10.2016 / 22:41

1 resposta

3

Substituir:

ssh -q [email protected]  << EOF

com:

ssh -q [email protected]  <<'EOF'

Isso impede que o shell no lado do cliente expanda o documento here. O script ainda será expandido no lado do servidor.

Documentação

De man bash :

The format of here-documents is:

          [n]<<[-]word
                  here-document
          delimiter

No parameter and variable expansion, command substitution, arithmetic expansion, or pathname expansion is performed on word. If any part of word is 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, the character sequence \<newline> is ignored, and \ must be used to quote the characters \, $, and '. [Emphasis added]

    
por 27.10.2016 / 23:26