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

问题描述 投票:0回答:3

我想将一个空字符串作为值之一传递给 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
3个回答
23
投票

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

这是 Bash FAQ 050 的一个版本。

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

而且你几乎从不想要使用不带引号的变量(如

for var in $VARS
)。


12
投票

我建议使用数组

#!/bin/bash

array=("" 1 2 "")

for i in "${array[@]}";do
    echo $i
done

0
投票

我正在构建一个包含另一个 bash 变量variablea 的数组,但它恰好是空的。 在这种情况下,通过引用 bash 变量来初始化这样的数组非常重要。

VARS=( "$variablea" )
© www.soinside.com 2019 - 2024. All rights reserved.