alors que les boucles d'attendre
Je suis l'aide d'attendre à l'intérieur de bash. Je veux que mon script pour telnet dans une boîte, s'attendre à une invite de commandes, envoyer une commande. Si il y a une autre invite de maintenant, il doit faire procéder, ou autre chose, elle a pour envoyer la commande à nouveau.
Mon script va comme ceci:
\#!bin/bash
//I am filling up IP and PORT1 here
expect -c "
set timeout -1
spawn telnet $IP $PORT1
sleep 1
send \"\r\"
send \"\r\"
set temp 1
while( $temp == 1){
expect {
Prompt1 { send \"command\" }
Prompt2 {send \"Yes\"; set done 0}
}
}
"
De sortie:
invalid command name "while("
while executing
"while( == 1){"
De bien vouloir m'aider.
J'ai essayé de le modifier pour while [ $temp == 1] {
Je suis toujours confronté à l'erreur ci-dessous:
De sortie:
invalid command name "=="
while executing
"== 1"
invoked from within
"while [ == 1] {
expect {
Vous pouvez d'abord écrire un pur attendre script pendant le débogage de ce problème de sorte que vous n'avez pas de shell citer des règles susceptibles de modifier votre script expect de manière subtile.
Ce qui se passe avec les étranges erreurs: parce que votre script est entre guillemets doubles, le shell (ne pas attendre) est substituant
Ce qui se passe avec les étranges erreurs: parce que votre script est entre guillemets doubles, le shell (ne pas attendre) est substituant
$temp
avec une valeur nulle.
OriginalL'auteur Pkp | 2011-04-20
Vous devez vous connecter pour publier un commentaire.
C'est de cette façon que j'avais de mettre en œuvre cette:
Quand il voit Prompt1, il va envoyer la commande, puis revenir à la partie supérieure de l'attendre bloc et d'attendre que soit Prompt1 ou Prompt2. Quand il voit Prompt2, il envoie Oui et tombe juste en dehors du bloc.
L'ai eu enfin..Merci 🙂
OriginalL'auteur glenn jackman
La syntaxe pour tout est "tout test de corps". Il doit y avoir un spce entre chacune de ces parties, qui est pourquoi vous obtenez le message d'erreur "no such commande)"
Aussi, en raison de tcl citer des règles, 99,99% du temps le test doit être dans des accolades. Ainsi, la syntaxe est la suivante:
Pour plus d'informations, voir http://tcl.tk/man/tcl8.5/TclCmd/while.htm
(vous avez probablement d'autres problèmes liés à votre choix de shell citations; cette réponse répond à vos question spécifique à propos de l'instruction while)
OriginalL'auteur Bryan Oakley