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

Ubuntu下sh与./执行Shell脚本时+=运算符报错原因及解决方案

问题原因
  • Ubuntu 18.04 中默认的sh实际指向的是Dash,这是一款严格遵循POSIX标准的轻量Shell,并没有实现Bash独有的+=字符串追加运算符
  • 当你用sh test.sh执行脚本时,Dash会把model+="Copy"整行识别为一个名为model+=Copy的可执行命令去查找,自然会抛出「not found」错误
  • 用./test.sh执行时,只要脚本头部声明了#!/bin/bash的Shebang,系统会自动调用Bash解释器执行,Bash对+=运算符做了扩展支持,所以运行正常
修复方案(必须使用sh运行时)

替换+=写法为POSIX标准的字符串拼接语法即可,修改后的代码如下:

copy=true
model="model"
if [ ${copy} = true ] ; then
    model="${model}Copy"
fi
echo ${model}

改完后不管用sh test.sh还是./test.sh都能正常输出modelCopy,完全兼容所有POSIX标准的Shell环境。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 13:18:03