【问题标题】:How to pass empty string to bash for loop如何将空字符串传递给bash for循环
【发布时间】:2016-01-12 14:13:53
【问题描述】:

我想将一个空字符串作为值之一传递给 bash for 循环——像这样:

for var in "" A B C; do
    ...
done

这行得通。但是,我想将可能的值存储在一个变量中,如下所示:

VARS="" A B C
for var in $VARS; do
    ...

这里,空字符串被忽略(或者如果我使用for var in "$VARS",则所有值都被连接起来)。有没有简单的方法来解决这个问题?

【问题讨论】:

    标签: string bash for-loop


    【解决方案1】:

    我建议使用数组

    #!/bin/bash
    
    array=("" 1 2 "")
    
    for i in "${array[@]}";do
        echo $i
    done
    

    【讨论】:

    • 注意:"${array[@]}" 两边的引号很重要,否则不起作用。
    • Explanation 上一条评论。
    【解决方案2】:

    你不能。不要那样做。使用数组。

    这是Bash FAQ 050 的一个版本。

    VARS=("" A B C)
    for var in "${VARS[@]}"; do
        : ...
    done
    

    而你几乎从不想要使用不带引号的变量(如for var in $VARS)。

    【讨论】:

      猜你喜欢
      • 2015-03-24
      • 1970-01-01
      • 2014-10-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-15
      • 2017-01-15
      • 2020-06-16
      相关资源
      最近更新 更多