Problemas variáveis no SSH
Ei pessoal, estou tentando executar este código:
#!/bin/bash
sudo /usr/local/bin/sshpass -p pwd ssh -o stricthostkeychecking=no -p 11022 admin@$1.test.com<<EOI
i=1
while read line
do
location="sudo sed -n ${i}p /Users/Shared/$1.txt"
number="sudo sed -n ${i}p /Users/Shared/$2n.txt"
my_array=("${my_array[i]}" $line)
sudo cp /Applications/TEPS\ OS\ X\ Share\ Folder/MAIN\ IMAGES\ FOLDER\ ƒ/${location}${number} /Users/Shared/FYP/$number
sudo sips -Z 256 /Users/Shared/FYP/$number /Users/Shared/FYP/$number
((i++))
done </Users/Shared/$2.txt
exit
EOI
basicamente, ele lê um arquivo de texto que fornece a localização de determinadas imagens e cria uma miniatura dessas imagens, que pode ser baixada posteriormente. O problema é que preciso do valor de $ i para definir os valores de $ location e $ number, mas quando defino a variável no loop while, as variáveis não são definidas. Eu tentei configurá-lo local e globalmente com aspas simples, aspas duplas, passando com o sshpass, exportando-o - Isso funciona como um teste, mas $ i é claro que desconhecido - tentei colocar colchetes, chaves, parênteses, escapar $, neste ponto, esgotei minhas idéias, provavelmente é algo incrivelmente simples, mas eu poderia usar um par de olhos novo, qualquer ajuda é muito apreciada!
EDIT: Obrigado a Charles Duffy por me ajudar a limpá-lo, então é isso que tenho agora:
#!/bin/bash
sudo /usr/local/bin/sshpass -p support ssh -o stricthostkeychecking=no -p 11022 admin@$1.noerrpole.com<<'EOI'
i=1
while read -r line
do
location=sudo sed -n ${i}p "/Users/Shared/$1.txt"
number=sudo sed -n ${i}p "/Users/Shared/$2n.txt"
my_array+=( "$line" )
sudo cp "/Applications/TEPS\ OS\ X\ Share\ Folder/MAIN\ IMAGES\ FOLDER\ ƒ/${location}${number}" "/Users/Shared/FYP/$number"
sudo sips -Z 256 "/Users/Shared/FYP/$number" "/Users/Shared/FYP/$number"
((i++))
exit
done <"/Users/Shared/$2.txt"
EOI
Mas agora $ 2 não estão sendo repassados para o loop, aqui está o que eu recebo de volta
1:bin Photo$ bash -x thumb npco2 20131216154714
+ sudo /usr/local/bin/sshpass -p support ssh -o stricthostkeychecking=no -p 11022 [email protected]
Pseudo-terminal will not be allocated because stdin is not a terminal.
SHPA_12-16-2013/
sed: /Users/Shared/n.txt: No such file or directory
cp: /Applications/TEPS OS X Share Folder/MAIN IMAGES FOLDER ƒ/ is a directory (not copied).
Warning: /Users/Shared/FYP/ not a valid file - skipping
Warning: /Users/Shared/FYP/ not a valid file - skipping
Error 4: no file was specified
Try 'sips --help' for help using this tool
Então, onde $ 2 deve ser igual a 20131216154714, está retornando uma string vazia como esta
sed: /Users/Shared/n.txt: No such file or directory
O comando correto seria
sed: /Users/Shared/20131216154714n.txt
O resto está falhando porque US $ 2 não foram repassados. Mais uma vez, obrigado pela ajuda!