Differenza tra virgolette singole e doppie virgolette quando passano il command tramite ssh

Quando invio un command a un server remoto su ssh, quale è la differenza tra:

ssh user@123.456.789.012 'foo' 

e

  • L'authentication chiave non funziona quando si utilizza ssh o rsync come sudo
  • Quali sono le pratiche migliori per la gestione di chiavi SSH in una squadra?
  • È ansible eseguire un command su server Windows da Linux?
  • Impostazione di FQDN in sendmail
  • Come impostare l'autenticatore google e impostare regole specifiche di corrispondenza per consentire diverse regole di accesso?
  • L'accesso MySQL ha negato l'errore quando si connette tramite tunnel SSH
  •  ssh user@123.456.789.012 "foo" 

    Non sto trasmettendo alcuna variabile, e ottengo risultati diversi quando esegue un command in remoto.

    One Solution collect form web for “Differenza tra virgolette singole e doppie virgolette quando passano il command tramite ssh”

    Probabilmente nessuna differenza per questo esempio, ma certamente sarebbe per questo:

     ssh user@123.456.789.012 "echo $PATH" 

    Il motivo è che bash valuterà e sostituisce le variables all'interno di doppie virgolette sulla macchina locale, ma lo farà sulla macchina di destinazione all'interno di virgolette singole.

    Lo stesso vale per i sottogruppi:

     ssh user@123.456.789.012 "echo `hostname`" ssh user@123.456.789.012 "echo $(hostname)" 

    Tuttavia, non sembra vero per le funzioni:

     $ foo () { echo "Foo"; } $ foo Foo $ ssh user@123.456.789.012 "foo" bash: foo: command not found 

    Globbing non avviene anche in double citazione:

     $ ssh user@123.456.789.012 "ls -l *" $ ssh user@123.456.789.012 "ls -l numbered_files.?.gz" 
    Suggerimenti per Linux e Windows Server, quali Ubuntu, Centos, Apache, Nginx, Debian e argomenti di rete.