为什么l";消失在zsh脚本中

为什么l";消失在zsh脚本中,zsh,Zsh,我在.zshrc中编写了一个函数: cnj(){ port=0; echo -n "Enter number of port > "; read port; a="ssh -N -f -L localhost:$port:localhost:$port name@ip"; echo $a; } 结果表明: ssh -N -f -L localhost:8909ocalhost:8909 name@ip 为什么 消失在 localhost:89

我在.zshrc中编写了一个函数:

cnj(){
    port=0;
    echo -n "Enter number of port > ";
    read port;

    a="ssh -N -f -L localhost:$port:localhost:$port  name@ip";
    echo $a;
}
结果表明:

ssh -N -f -L localhost:8909ocalhost:8909 name@ip
为什么

消失在

localhost:8909ocalhost:8909

这是一个例子

$var:l
特别是将
$var
的内容转换为小写

要防止
:l
被解释为修饰符,可以在变量名周围添加大括号:

"...${port}:localhost:..."

你能编辑你的问题并详细说明你在做什么以及你犯了什么错误吗?@ThiruShetty:这个问题对我来说似乎很清楚。回显字符串不包含OP所需的所有字符。您已经编辑了答案,但仍然:在双引号字符串中使用
$foo \:l
似乎也会输出回显本身。@FelixKling是的,这就是我删除它的原因。:-)我只是想在其他人想知道你为什么不建议使用
\
:)之前指出这一点,你绝对是个天才!!
"...${port}:localhost:..."