2

Я пытаюсь запустить tmux, передавая несколько команд одновременно, и я не могу правильно заключить строку в кавычки.

Команда успешно выполняется при ручном вводе в командной строке:

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

Но в реальном случае мне нужно построить команду динамически, и тогда я не могу заставить ее правильно расширяться. Одиночные кавычки, похоже, отбрасываются при расширении ${=var} :

 ~% 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]

tmux не понимает команду, когда она передается как одна строка, т.е. не включает в строку токен /usr/local/bin/tmux и расширяет остальное с помощью ${cmd} вместо ${=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

моя версия zsh:

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

1 ответ1

1

${(z)var} расширяет переменную, сохраняя внутренние кавычки нетронутыми.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .