Comment utiliser bash $(awk) en simple ssh-commande?

Je suis en train d'exécuter une commande unique sur ssh qui contient des " sous-code` ou $(sous-code) (je l'utilise tout le temps, mais je ne sais pas le nom officiel pour ça) pour être exécuté en premier, mais sur le serveur cible.

Pour les besoins de la discussion, disons que c'est la commande que je veux utiliser. Bien sûr, cela peut être fait avec hostname, mais c'est juste un exemple simplifié qui contient toute la mise en forme de magie que je veux utiliser.

echo `uname -a | awk '{print $2}'`

Pas de problème. Mais comment voulez-vous échapper à cette correctement pour l'envoyer plus de ssh en une seule commande? Le suivant est incorrect, car elle permet à la réponse du serveur, votre nom d'hôte local. Le sous-code est exécuté localement:

ssh myServer echo `uname -a | awk '{print $2}'`

Mais tout d'échappement ishness qui vient à l'esprit ne fonctionne pas:

$ ssh myServer echo \`uname -a | awk '{print $2}'\`
awk: cmd. line:1: {print $2}`
awk: cmd. line:1:           ^ invalid char '`' in expression
$ ssh myServer echo $(uname -a | awk '{print $2}')
bash: syntax error near unexpected token `('
$ ssh myServer echo $\(uname -a | awk '{print $2}')
bash: syntax error near unexpected token `)'
$ ssh myServer echo $\(uname -a | awk '{print $2}'\)
awk: cmd. line:1: {print $2})
awk: cmd. line:1:           ^ syntax error
bash: -c: line 0: unexpected EOF while looking for matching `)'
bash: -c: line 1: syntax error: unexpected end of file

Je voudrais une réponse qui comprend l'utilisation de échappées ` or $() because I'd like to know if it's possible.echo` pourrait être quelque chose de plus compliqué.

  • pourquoi echo `command`? pourquoi ne pas command?
  • parce qu'il veut voir comment passer un backtick ou un $( via ssh à un serveur distant
InformationsquelleAutor Redsandro | 2013-02-05