Je voudrais être en mesure de passer une commande longue à attendre. C'est une commande multiple en quelque sorte. est d'abord ici mon attendre scénarioComment interpréter un ATTENDRE peut caractère échappé à un caractère de commande
#!/usr/bin/expect -f
set timeout -1
spawn telnet xxx.xxx.xxx.xxx
expect "*?username:*"
send "someusername\r"
expect "*?assword:*"
send "somepassword\r"
# Here's the command I'd like to pass from the command prompt
set command [lindex $argv 0]
send "$command\r"
send "exit\r"
Je puis exécuter ce script comme si:
./expectscript "mkdir /usr/local/dir1\ncd /usr/local/dir1\ntouch testfile"
Notez que je mets « \ n » pour ouvrir une entrer comme si je suis le traitement de la commande avant de passer à la suivante.
Je sais que vous pourriez séparer les commandes avec ";", mais pour cet exercice particulier, je voudrais pouvoir espérer interpréter le "\ n" avec un "\ r" de sorte que, s'attendre à se comporter comme si elle était comme ceci:
send "mkdir /usr/local/dir1\r"
send "cd /usr/local/dir1\r"
send "touch testfile\r"
la question devient alors comment peut attendre d'interpréter le « \ n » pour être « \ r »? J'ai essayé de mettre le "\ r" dans l'argument au lieu de "\ n", mais cela ne fonctionne pas.
Merci pour l'entrée.
Notez qu'il est '{\\ n}' regexp parce que nous voulons faire correspondre une barre oblique inverse-n littéral et c'est la forme qui minimise le nombre d'antislash vous devez écrire pour obtenir le littéral passé l'analyse syntaxique de Tcl et le moteur RE de analyse ... –
Merci de prendre la mesure supplémentaire pour expliquer votre réponse en détail :) – EDJ