comment mettre en bash variable en attendre ou de la variable de retour de s'attendre à bash
VAR=$(expect -c '
spawn ssh-copy-id -i '"$SSH_KEY_PATH_PUB $REMOTE_HOST_USER@$REMOTE_HOST_IP"'
expect "*?assword:*"
send "'"$REMOTE_HOST_PASSWD"'\r";
expect {
"Permission denied, please try again."{
send user "Wrong pass"
exit 5
}
}
')
echo "$VAR"
Mise à JOUR:
J'ai donc besoin de la sortie de l'état, quand le code entre le refus d'une Autorisation de bloc.Je suis lookin à $?
Mais il est à 0 car "$VAR" s'exécute avec succès.
J'ai donc besoin d'un un entier de valeur de retour quand elle entre dans le refus d'une Autorisation de bloc
Vous devez vous connecter pour publier un commentaire.
Dans ce cas,
VAR
contient lesoutput
de la commande.Vous devez utiliser
$?
, qui contient le statut de sortie de la dernière commande exécutée. Définition d'une variable ne modifie pas$?
, il contient toujours l'état de sortie de la shell interne est exécuté$(...)
.Exemple:
Attendre lance son propre shell tcl, de sorte que vous ne pouvez pas utiliser des alias définis dans votre environnement bash.
S'attendre à n'avoir que la variable
$env(YOURBASHVARIABLE)
, ce qui permet à Attendre pour récupérer vos variables d'environnement, mais Attendez-vous pouvez seulement modifier interne pour le script. Cependant, toutes les modifications que vous apportez à la variable ne seront pas conservées une fois le script expect est fini.Si l'indicateur va être un certain nombre, vous pouvez utiliser un état de sortie (par exemple,
exit 5
) et ensuite utiliser$?
dans votre script pour obtenir le statut de sortie.Par votre mise à jour
Le script expect ne retourne rien, c'est juste définit un code de sortie.
Ce que vous pourriez faire est de:
De cette façon,
var
sera mis à votre statut de sortie.Aussi, vous devriez prendre note de ceci:
MODIFIER(mpapis): il y a aussi d'autres cas d'utilisation:
MODIFIER(twmb)
Avec le dernier cas d'utilisation, vous devez être prudent avec ce que vous êtes de retour. Il va prendre toute sortie est envoyée à l'utilisateur. Sauf si vous avez la journalisation est désactivée (avec
log_user 0
) et vous contrôlez exactement ce que sera édité dans le script expect, vous obtiendrez probablement plus de renseignements que nécessaire.Un autre, faites glisser avec ce qui est indiqué dans le commentaire ci-dessous;
En attendent de vous que vous pouvez utiliser
set env
pour manipuler les variables d'environnement.Si un numéro, vous pouvez passer de la variable s'attendre à bash merci pour quitter la commande.
Voyons un exemple: