Problemas variables en SSH
Hola chicos, estoy tratando de ejecutar 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
básicamente lee un archivo de texto que proporciona la ubicación de ciertas imágenes, y creará una miniatura de esas imágenes, que se pueden descargar más tarde. El problema es que necesito el valor de $ i para establecer los valores de $ location y $ number, pero cuando configuro la variable dentro del ciclo while, las variables no están establecidas. Intenté configurarlo local y globalmente con comillas simples, comillas dobles, pasar con sshpass, exportarlo -Esto funciona como una prueba, pero $ i, por supuesto, se desconoce- intenté colocar corchetes, llaves, paréntesis, escapando $, en este punto he agotado mis ideas, probablemente sea algo increíblemente simple, pero podría usar un par de ojos nuevos, ¡cualquier ayuda es muy apreciada!
EDITAR: Gracias a Charles Duffy por ayudarme a limpiarlo, así que esto es lo que tengo ahora:
#!/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
Pero ahora no se pasan $ 2 al bucle. Esto es lo que obtengo.
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
Entonces, donde $ 2 debería ser igual a 20131216154714, está devolviendo una cadena vacía como esta
sed: /Users/Shared/n.txt: No such file or directory
El comando correcto sería
sed: /Users/Shared/20131216154714n.txt
El resto simplemente está fallando porque no se pasan $ 2. ¡De nuevo, gracias por la ayuda!