J'ai écrit un script shell qui se connecte à deux hôtes et grep un mot dans le serveur sur un chemin particulier. Je dois attribuer la sortie du GREP à une variable et renvoyer la sortie.
PFB ma fonction Je veux que la variable de somme soit renvoyée par la fonction ci-dessus.
J'ai essayé le code ci-dessus mais je ne reçois aucune sortie à partir des variables $ $ SUMD2, $ SUM. S'il vous plaît conseiller. P> p>
3 Réponses :
La ligne dans votre script doit être réécrité comme p>
$ Ajouter code> ne sont pas définis sur le côté du client
@Sorin, l'OP demande comment résumer, le reste est sa responsabilité
"J'ai essayé le code ci-dessus mais je ne reçois aucune sortie à partir des variables $ add2, $ add2, $ somme. S'il vous plaît conseiller." - Ceci est de la question. Il me semble qu'il demande plus qu'une somme
Cela devrait vous donner une idée de ce que vous devez faire: Note: strong> non testé P> Vos erreurs: p>
$ (()) CODE> LI>
-c code> si vous devez exécuter une coque li>
ul> p>
grep -c code> retirez ensuite le
| wc -l code>
@Jetchisel: cela fonctionne pour un fichier unique si vous grep -h code> ou i> Redirection ou i>
coupe -d: -f2 code> ou similaire, mais pas avec
grep -r code> où il produit plusieurs chiffres par fichier non un total
Le Bash -C code> semble inconnu et il semble manquer une citation unique.
@tripleeee, sans Bash -C toutes les lignes résultantes seraient apportées du côté du client, s'il ya de nombreux matchs, cela signifierait beaucoup de données transférées inutilement
Just ssh ebi @ "1 $ 1" "grep -ri '$ 2' / var / log / cluster / | wc -l" code> y ferait déjà. Il n'y a pas de code spécifique à bash ici. (Remarquez cependant les citations ajoutées.)
@tripleeeeee, à partir du manuel SSH "Si la commande est spécifiée, elle est exécutée sur l'hôte distant au lieu d'une coque de connexion", donc j'ai toujours supposé qu'une coquille est nécessaire pour la tuyauterie, mais j'ai fait un test rapide et il semble que vous avez raison.
@tripleee regarda le code - il utilise la coque de l'utilisateur pour exécuter la commande - github.com/openssh/openssh-portable/blob/... - J'ai appris quelque chose aujourd'hui, merci
Oui, il y a toujours le problème que certains utilisateurs ont une coquille non standard; Je suppose que je suis d'accord avec la décision que ssh code> devrait exécuter la coque préférée de l'utilisateur, mais c'est une mise en garde pour la portabilité, bien sûr.
Vous pouvez également essayer
Aucun script Bash ne devrait exiger Expr code>; Bash a des remplaçants intégrés pour toutes les fonctionnalités fournies par cet outil hérité. La syntaxe de backtick est obsolète et doit être évitée en faveur du POSIX moderne
$ (substitution de commande) code> syntaxe.