Salut, j'ai une fonction bash:fonction Bash donner en tant que paramètre -> archives ssh dossier distant dans archive.tar.gz local -> echo "test" emballé également dans le fichier tar
function echoAndExecArgs
{
echo -e "\n\n======== command: [email protected] ========"
[email protected]
}
Il fait écho à la commande et tous ses paramètres à stdout et l'exécute.
Je donne maintenant la commande suivante:
ssh [email protected] tar -czvf- /someFolder 2>> sterr.log | dd of=archive.tar.gz
Le problème vient du fait obtient également écrit la chaîne "\n\n======== command: [email protected] ========"
dans le début de mon dossier archive.tar.gz
.
Si je fais xxd -l 100 archive.tar.gz
, je vois que la chaîne "\n\n======== command: [email protected] ========"
est écrite au début du fichier. Cela conduit bien sûr au problème que le fichier est corrompu et ne peut pas être extrait comme d'habitude.
Ma question est: Comment est-il possible de donner ma commande ssh en tant que paramètre à la fonction echoAndExecArgs
qu'il redirige uniquement la sortie réelle du fichier de la commande tar dans le fichier archive.tar.gz
et non toutes les sorties std de l'ensemble de la fonction?
Cette approche donne le même résultat erroné:
ssh [email protected] "tar -zcf - /someFolder" > archive.gz
'stout' probablement juste une faute de frappe, mais juste au cas où il devrait être « stdout », ce qui signifie « sortie standard ». même chose pour 'sterr' qui devrait être" stderr ". – Aaron
Notez que vous voulez rarement '$ @' dans une chaîne entre guillemets plus grande. Non cité sur la ligne suivante, il n'est pas différent de "$ *" non cité et certainement pas * ce que vous voulez. – chepner