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

Shell脚本中如何使用+=运算符?遇两类问题求助

Shell脚本问题解决方案

问题分析

  • 无法使用+=运算符:若脚本以sh(POSIX标准shell)运行,+=字符串追加语法是bash的扩展特性,POSIX shell不支持。
  • *被解析为目录文件:未加引号的变量在echo时会触发路径名扩展,*会被替换为当前目录下的所有文件名称。

修复后的脚本

Bash兼容版本

#!/bin/bash
myVal=""
for ((i=1 ;i<=5 ;i++))
do
    myVal+=" * "
    echo "$myVal"
done

POSIX标准Shell兼容版本(无需Bash)

myVal=""
i=1
while [ $i -le 5 ]
do
    myVal="$myVal * "
    echo "$myVal"
    i=$((i+1))
done

关键修复点说明

  1. +=运算符支持:
    • 在Bash环境下,+=可直接用于字符串追加,脚本开头添加#!/bin/bash指定用Bash解释器即可启用该特性。
    • 若需兼容所有POSIX标准Shell,改用myVal="$myVal * "的方式拼接字符串。
  2. 避免*的路径扩展:
    • 必须用双引号包裹变量(echo "$myVal"),阻止Shell对*进行路径名扩展,保留其字面符号意义。

预期输出

* 
*  * 
*  *  * 
*  *  *  * 
*  *  *  *  * 

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 14:22:03