我有一个非常简单的代码如下。
myVal=""
for ((i=1 ;i<=5 ;i++))
do
myVal+=" * "
echo $myVal
done
问题是:
- 我无法在此shell脚本代码中使用
+=
- 当我在varibale中发送
*
时,它会打印我工作目录中的所有文件
输出:
*
* *
* * *
* * * *
* * * * *
您的问题与+=
无关,它运行良好;您的myVal
变量有一系列星号,完全符合预期。但当您echo
它时,这些星号会扩展到文件列表中。为了防止这种情况,你需要引用扩展:
echo "$myVal"
你应该总是在shell中引用扩展,除非你有很好的具体理由不这样做。基本上,每当你看到一个$
前面没有双引号时,你都应该停下来思考,确保你知道代码中发生了什么。