在变量中解压缩字符串

时间:2010-08-08 13:40:27

标签: variables zsh

在Bash中,我可以使用以下代码:

[ "$sshcmd" = "" ] && sshcmd="ssh -someopts myhost"

$sshcmd "echo hello world"

在ZSH中,相同的代码不起作用,因为它试图找到“ssh -someopts myhost”可执行文件。我怎样才能在ZSH中做同样的事情?

谢谢,艾伯特

1 个答案:

答案 0 :(得分:2)

要像其他shell一样在空格处拆分字符串(更常见的是,$IFS):$=sshcmd

但是你应该使sshcmd成为一个数组,这样如果其中一个选项包含空格,你的命令仍然有效:

sshcmd=(ssh -someopts myopts)
$sshcmd[@] "echo hello world"

顺便说一下,这也适用于bash和ksh;但是你必须保护数组变量替换以防止进一步的拆分和文件名扩展:

sshcmd=(ssh -someopts myopts)
"${sshcmd[@]}" "echo hello world"