Expect Script: Maximale Anzahl von Befehlszeilenargumenten

Expect Script: Maximale Anzahl von Befehlszeilenargumenten

Ich versuche, scpeinen Befehl zu erzeugen, um eine Datei von einem Server auf einen anderen zu kopieren. Also übergebe ich 8 Argumente an ein expectSkript 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 diecmdlinePaket 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

verwandte Informationen