2015-10-14 7 views
8

Chcę przekazać pusty ciąg jako jedną z wartości na bash dla pętli - tak:Jak przekazać pusty ciąg bash dla pętli

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

To działa. Jednak chciałbym przechowywać możliwe wartości w zmiennej, tak:

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

Tutaj pusty ciąg jest ignorowana (lub wszystkie wartości są łączone, jeśli mogę użyć for var in "$VARS"). Czy istnieje prosty sposób rozwiązania tego problemu?

Odpowiedz

10

Nie możesz. Nie rób tego. Użyj tablicy. Jest to wersja Bash FAQ 050.

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

I prawie nigdy chcesz używać niecytowany zmiennej (jak for var in $VARS).

6

Sugerowałbym wykorzystaniem tablicy

#!/bin/bash 

array=("" 1 2 "") 

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

Uwaga: cudzysłowie * "$ {array [@]}" * są ważne, w przeciwnym razie nie będzie działać. –