2015-10-14 34 views
8

Tôi muốn vượt qua một chuỗi rỗng là một trong những giá trị cho một bash cho-loop - như thế này:Làm thế nào để vượt qua chuỗi rỗng để bash vòng lặp for

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

này hoạt động. Tuy nhiên, tôi muốn để lưu trữ các giá trị có thể trong một biến, như thế này:

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

Ở đây, chuỗi rỗng bị bỏ qua (hoặc tất cả các giá trị được nối nếu tôi sử dụng for var in "$VARS"). Có cách nào dễ dàng để giải quyết vấn đề này không?

Trả lời

10

Bạn không thể. Đừng làm thế. Sử dụng một mảng.

Đây là phiên bản Bash FAQ 050.

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

Và bạn gần như không bao giờ muốn sử dụng một biến thể viện chứng (như for var in $VARS).

6

tôi sẽ đề nghị sử dụng một mảng

#!/bin/bash 

array=("" 1 2 "") 

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

Lưu ý: các dấu ngoặc kép quanh * "$ {array [@]}" * rất quan trọng, nếu không nó sẽ không hoạt động. –

Các vấn đề liên quan