ZSH Quote escapando e expansão

2

Estou tentando executar o tmux, passando vários comandos ao mesmo tempo e não consigo citar corretamente a string.

O comando é bem-sucedido quando digitado manualmente na linha de comandos:

~% /usr/local/bin/tmux start-server\; set-option -g default-command '/usr/bin/true 1 2 3' \; new-session
[exited]

Mas, no caso real, preciso criar o comando dinamicamente e não consigo fazer com que ele se expanda corretamente. As aspas simples parecem ser descartadas durante a ${=var}expansão:

 ~% cmd="/usr/local/bin/tmux start-server; set-option -g default-command '/usr/bin/true 1 2 3' ; new-session"
 ~% ${=cmd}
usage: set-option [-agosquw] [-t target-session|target-window] option [value]

O tmux não entende o comando quando transmitido como uma única cadeia, ou seja, não incluindo o /usr/local/bin/tmuxtoken na cadeia e expandindo o restante usando ${cmd}como oposto ${=cmd}.

~% /usr/local/bin/tmux 'start-server; set-option -g default-command "/usr/bin/true 1 2 3"; new-session'
unknown command: start-server; set-option -g default-command "/usr/bin/true 1 2 3"; new-session

minha versão zsh:

⚠~% ${SHELL} --version
zsh 5.0.2 (x86_64-apple-darwin12.2.1)

fonte

Respostas:

2

${(z)var} expande a variável enquanto mantém intactas as aspas internas.


fonte