如何将空字符串传递给bash for循环

Tue*_*hek 12 string bash for-loop

我想将一个空字符串作为一个值传递给bash for-loop - 就像这样:

for var in "" A B C; do
    ...
done
Run Code Online (Sandbox Code Playgroud)

这有效.但是,我想将可能的值存储在变量中,如下所示:

VARS="" A B C
for var in $VARS; do
    ...
Run Code Online (Sandbox Code Playgroud)

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

Eta*_*ner 13

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

这是Bash FAQ 050的一个版本.

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

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


123*_*123 8

我建议使用一个数组

#!/bin/bash

array=("" 1 2 "")

for i in "${array[@]}";do
    echo $i
done
Run Code Online (Sandbox Code Playgroud)

  • 注意: *"${array[@]}"* 周围的引号很重要,否则将不起作用。 (3认同)
  • [说明](https://unix.stackexchange.com/questions/347130/why-do-we-double-quote-a-dollar-sign-evaluation-in-bash) 之前的评论。 (2认同)