2015-10-14 8 views
8

voglio passare una stringa vuota come uno dei valori per un bash per-loop - in questo modo:Come passare una stringa vuota per colpire per il ciclo

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

Questo funziona. Tuttavia, desidero memorizzare i valori possibili in una variabile, come questo:

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

Qui, la stringa vuota viene ignorato (o tutti i valori sono concatenati se uso for var in "$VARS"). C'è un modo semplice per risolvere questo?

risposta

10

Non è possibile. Non farlo. Usa un array.

Questa è una versione di Bash FAQ 050.

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

E quasi mai desidera utilizzare una variabile non quotate (come for var in $VARS).

6

Io suggerirei di usare una matrice

#!/bin/bash 

array=("" 1 2 "") 

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

Nota: le virgolette intorno * "$ {array [@]}" * sono importanti, altrimenti non funziona. –

Problemi correlati