Acabamos de descobrir como consertar o problema, então aqui está o guia:
Como solucionar problemas de comandos que não serão executados corretamente em um script
aka
Como ver exatamente o que está sendo executado pelo shell
No script, inclua seu comando problemático com o comando set:
set -x #unhide debug info
your command
set +x #hide debug info
No meu exemplo anterior, foram port=1000
e cmd="ls /dev/shm"
:
ssh [email protected] -p $port "'"$cmd"'"
Foi realmente enviado para o shell e executado como:
ssh [email protected] -p 1000 ''\''ls' '/dev/shm'\'''
Olha só! Agora todos nós sabemos, as aspas duplas "" são na verdade uma citação simples hiperativa bipolar disfarçada apenas esperando na esquina para mexer com você ... e às vezes traz um amigo chamado Mr. barra invertida.
A solução foi usar aspas duplas no script:
ssh [email protected] -p $port "$cmd"
Quando combinado com as aspas duplas da linha de comando, as citações são traduzidas e executadas como aspas simples '' assim:
ssh [email protected] -p 1000 'ls /dev/shm'
Quem sabia! você fez? bom para você!
Apenas uma outra maneira que nix mexe com a gente: P