You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Bash环境下使用三元运算符实现条件变量赋值问题求助

你原本使用的$(( ... ))是Bash的算术扩展语法,仅支持数值运算,无法返回字符串结果,这就是你得到的结果附带多余字符的核心原因。以下是两种可用的实现方案:

方案1:标准if判断(兼容性最好,无语法坑)

if [ "$unique" -eq 1 ]; then
    dir=":$(hostname)"
else
    dir=""
fi
dest="$user@$dest$dir"

说明:用-eq做数值比较,避免字符串比较带来的异常,所有变量加双引号规避特殊字符、空格导致的报错。

方案2:类三元简洁写法

dir=$([ "$unique" -eq 1 ] && echo ":$(hostname)" || echo "")
dest="$user@$dest$dir"

说明:通过$()捕获命令输出,条件成立时输出:加主机名,不成立时输出空字符串,完全符合需求。

内容的提问来源于stack exchange,提问作者CodingInTheUK

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 04:18:02