条件运算符中闭引号后的额外字符

Extra characters after close quote in conditional operator

我正在使用条件运算符,但出现错误 "extra characters after close-quote"。 fdx 是我试图通过函数参数传递的参数,我正在检查传递的参数是否为 "fdx" ,并根据该参数确定要写入的值。

    proc set_ifg_seville2 {port sgmii speed fdx} {
   case $speed {
    10 {
        erf_wr -s dev_$port mac_ifg_cfg tx_ifg [expr ($fdx == "fdx") ? 5:4]

      }

    } #Closing procedure

代码中的三元运算表达式应更改为,

erf_wr -s dev_$port mac_ifg_cfg tx_ifg [expr {$fdx == "fdx" ? 5:4}]

示例:

% set fdx "fdx"
fdx
% set result [expr {$fdx=="fdx" ? "pass" : "fail" }]
pass
% set result [expr {$fdx=="Whosebug" ? "pass" : "fail" }]
fail
%

参考: expr