Para responder à pergunta, porque outros podem pesquisar por este título:
- somente zsh:
print -r -- ${(q)var} ${(qq)var} ${(qqq)var} ${(qqqq)var}
para diferentes tipos de cotação. - ksh93, zsh ou bash:
printf %q "$var"
-
BusyBox (e todos acima).
Uso de diferenças de nivelamento de vars entre ash, bash e ksh:
q1="'" q2="'\''" printf '%s\n' "'${var//$q1/$q2}'"
Não em traços e em shells antigos (os que estão faltando $ {var // pat / str}).
-
mais portável?
printf "'%s'\n" "$(printf '%s' "$var" | sed "s/'/'\\''/g")" Or printf '%s\n' "$var" | sed "s/'/'\\''/g; 1s/^/'/; \$s/$/'/"
Melhorias de bom grado bem-vindas!