
Ich versuche, scp
einen Befehl zu erzeugen, um eine Datei von einem Server auf einen anderen zu kopieren. Also übergebe ich 8 Argumente an ein expect
Skript wie folgt
expect my_x_script.exp file_src file_dest s_user s_pass s_host d_user d_pass d_host
Ist es zulässig, so viele Argumente an ein Skript zu übergeben expect
?
Antwort1
Ja, mit so vielen Argumenten gibt es kein Problem. Abhängig von Ihrer erwarteten Version extrahieren Sie die Werte mit einer der folgenden Methoden:
lassign $::argv \
src_file src_user src_pass src_host \
dest_file dest_user dest_pass dest_host
# or
foreach {src_file src_user src_pass src_host dest_file dest_user dest_pass dest_host} $::argv {break}
Irgendwann wird die Benutzeroberfläche jedoch schwer zu verwalten. Sie sollten vielleicht die Verwendung von Befehlszeilenoptionen in Betracht ziehen, um die Übersicht zu behalten. Schauen Sie sich diecmdline
Paket abtcllib
. Dann können Sie Folgendes tun:
expect my_x_script.exp \
-src_file file_src \
-src_user s_user \
-src_pass s_pass \
-src_host s_host \
-dest_file file_dest \
-dest_user d_user \
-dest_pass d_pass \
-dest_host d_host