Se você deseja incluir aspas duplas entre aspas duplas, precisará
- encerra a sequência de aspas duplas atual:
"
- escape de uma aspa dupla:
\"
- inicie a sequência de aspas duplas novamente:
"
Em outras palavras: "\""
Idem para incluir aspas simples dentro de aspas simples: '\''
Você também precisa escapar de $f
com \$f
, pois ele existe somente dentro do script de string citado.
ssh $1 "cd "\""$2"\""; pwd; echo "\""$logfilepattern"\"" ; for f in "\""$logfilepattern"\""; do echo "\""\$f"\""; done"
Que parece muito feio e é muito difícil de ler e / ou depurar.
Neste caso em particular, como você está controlando a entrada para sua função e pode estar razoavelmente seguro de que não vai dar valores duvidosos (incluindo nomes de arquivos com espaços), você pode se livrar das aspas duplas se você quer. Exceto por "$ f", a menos que você esteja absolutamente certo de que não haverá arquivos correspondentes a $ logfilepattern que contenham espaços ou outros caracteres problemáticos.
ssh $1 "cd $2; pwd; echo $logfilepattern ; for f in $logfilepattern; do echo "\""\$f"\""; done"
Se a entrada vier de um usuário de alguma forma, por exemplo na linha de comando ou de uma variável de ambiente (especialmente CGI env vars), então você deve (bem, deve) reverter para o estilo defensivo de citar todas as variáveis.