Variable Probleme in SSH
Hey Leute, ich versuche diesen Code auszuführen:
#!/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
Im Grunde liest es eine Textdatei, die den Speicherort bestimmter Bilder angibt, und erstellt eine Miniaturansicht dieser Bilder, die später heruntergeladen werden kann. Das Problem ist, dass ich den Wert von $ i brauche, um die Werte von $ location und $ number zu setzen, aber wenn ich die Variable innerhalb der while-Schleife setze, werden die Variablen nicht gesetzt. Ich habe versucht, es lokal und global mit einfachen Anführungszeichen, doppelten Anführungszeichen zu setzen, mit dem sshpass durchzugehen und es zu exportieren. Dies funktioniert als Test, aber $ i ist natürlich unbekannt. An diesem Punkt habe ich meine Ideen erschöpft, es ist wahrscheinlich etwas unglaublich Einfaches, aber ich könnte ein neues Paar Augen gebrauchen, jede Hilfe wird sehr geschätzt!
EDIT: Vielen Dank an Charles Duffy, der mir beim Aufräumen geholfen hat.
#!/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
Aber jetzt werden $ 2 nicht an die Schleife weitergeleitet. Hier ist, was ich zurück bekomme
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
Wo also $ 2 gleich 20131216154714 sein sollte, wird eine leere Zeichenfolge wie diese zurückgegeben
sed: /Users/Shared/n.txt: No such file or directory
Der richtige Befehl wäre
sed: /Users/Shared/20131216154714n.txt
Der Rest scheitert nur daran, dass $ 2 nicht weitergereicht werden. Nochmals vielen Dank für die Hilfe!