【问题标题】:How to use += operator in shell script?如何在 shell 脚本中使用 += 运算符?
【发布时间】:2022-09-22 23:58:22
【问题描述】:

我有一个非常简单的代码,如下所示。

myVal=\"\"
for ((i=1 ;i<=5 ;i++))
do
    myVal+=\" * \"
    echo $myVal
done

问题是:

  1. 我无法在这个 shell 脚本代码中使用+=
  2. 当我在变量中传递* 时,它会打印我工作目录中的所有文件。

    输出:

    *
    * * 
    * * *
    * * * *
    * * * * *
    
  • 带引号?喜欢\"$myVal\"
  • 对不起,我没有得到你。我在 shell 中很新
  • 引用每个变量扩展,直到它没有做你期望/希望它做的事情,而不是相反。
  • 好的,让我试着去做。

标签: bash shell unix


【解决方案1】:

您的问题与+= 无关,它工作正常; yur myVal var 有一个完全符合预期的星号序列。但是当你echo它时,这些星号会扩展到文件列表中。你需要引用它:

echo "$myVal"

除非你有一个很好的理由不在 shell 中引用扩展,否则你应该总是引用它。每当您看到前面没有双引号的$ 时,请停下来思考并确保您知道自己在做什么。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-06-27
    • 2011-03-02
    • 1970-01-01
    • 2013-12-03
    • 2019-12-16
    • 2012-09-09
    • 2013-07-16
    相关资源
    最近更新 更多