2015-10-14 3 views
8

Я хочу передать пустую строку в качестве одного из значений в Баш для цикла - как это:Как передать пустую строку, чтобы колотить цикл

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

Примечание: кавычки вокруг * "$ {массив [@]}" * имеют важное значение, в противном случае он не будет работать. –

Смежные вопросы