2015-10-14 67 views
8

我想一个空字符串作为值之一传递给for循环是bash - 这样的:如何通过空字符串抨击for循环

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

这工作。不过,我想存储的可能值的变量,就像这样:

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

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

回答

10

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

这是Bash FAQ 050的一个版本。

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

和你差不多从未要使用带引号的变量(如for var in $VARS)。

6

我会建议使用数组

#!/bin/bash 

array=("" 1 2 "") 

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

注:引号* “$ {数组[@]}” *是很重要的,否则将无法正常工作。 –