Comment utiliser le script bash variables en attendre les instructions conditionnelles
Je suis en train d'écrire un script bash et à l'aide attendez-vous à faire du sftp. Maintenant, dans le fait de s'attendre à bloc je veux accéder à un bash variable dans une instruction conditionnelle. mais, je suis incapable de le faire. Quelqu'un peut-il aider en cela. Aussi, l'exécution de ce script est contrôlé à partir d'un c prograame et je wan pas rediriger la sortie vers un fichier journal (qui est dynamique). Puis-je le faire et de supprimer tous les teh sortie sur stdout
voici le code
!/usr/bin/bash
host=$1
user=$2
pass=$3
action=$4
path=$5
echo "Starting...."
function doAction {
strAction="\""$action"\""
echo $strAction
/usr/bin/expect <<EOF > logfile.txt
**set bashaction $strAction**
spawn sftp $user@$host
expect "password:"
send "$pass\r"
expect"sftp>"
send "cd $path\r"
**if {$bashaction == "TEST"} {**
expect "sftp>"
send "prompt\r"
}
expect "sftp>"
send <sftp command>
expect "sftp>"
send_user "quit\n"
exit
EOF
}
doAction
echo "DONE....."
pour 1. à l'aide de script expect plutôt travaillé.
pour l'enregistrement de problème, à l'aide de log_user 0 et log_file -a aidé
Avez-vous besoin de
set bashaction
? Pourquoi ne pas tout simplement se référer à $strAction
directement dans votre si?OriginalL'auteur puneet agrawal | 2012-06-21
Vous devez vous connecter pour publier un commentaire.
Vous n'avez pas besoin d'utiliser
bash
,expect
peut gérer tout cela:Venant de
bash
, le Tcl/Attendre la syntaxe est un peu étrange, mais vous ne devriez avoir aucun problème en élargissant le dessus de la carcasse. Bonne chance.href="http://stackoverflow.com/questions/219138/get-command-output-in-pipe-c-for-linux">ici c'est votre réponse pour la redirection d'entrée/sortie de la commande
OriginalL'auteur Hai Vu
Accéder aux Variables d'Environnement à partir de TCL et Attendre
Depuis que vous êtes à l'appel de ce script expect à partir d'un autre processus, vous pouvez utiliser des variables d'environnement. Par exemple, si votre processus parent a exporté action l'environnement, vous pouvez accéder à sa valeur au sein de votre script expect avec:
De Bash, vous pouvez marque de la variable pour l'exportation avec le exportation builtin. Par exemple:
Puisque je ne suis pas sûr de savoir comment vous êtes en invoquant le fait de s'Attendre script à partir de C, c'est à vous de assurez-vous que la variable est correctement exporté.
De désactiver la connexion sur la Sortie Standard
Pour désactiver la journalisation sur la sortie standard du processus lancés, Attendre fournit la log_user de commande. Vous pouvez empêcher votre processus lancés à partir de l'écriture sur la sortie standard avec
log_user 0
.Le prévoyons(1) manuel dit:
Ce n'est pas réellement près sortie standard, qui n'est généralement pas ce que vous voulez de toute façon. Ainsi, tout ce qui écrit sur la sortie standard stdout lever une erreur comme ceci:
OriginalL'auteur Todd A. Jacobs
Pour supprimer la sortie à la sortie standard (stdout) vous pouvez utiliser
Pour écrire dans un fichier journal, vous pouvez utiliser la même tuyauterie (
>
ou>>
), ou letee
commande si vous voulez écrire la sortie dans le milieu d'une longue pipe.OriginalL'auteur Nit