2015-09-25 2 views
0

Используя два уровня for цикла и seq работает отлично, а кодДвухуровневая «для» петли настроенного списка

for i in `seq 0 3`; do for j in `seq 0 3`; do echo $i $j; done; done 

дает ожидаемый результат:

0 0 
0 1 
1 0 
1 1 

Но если Я хочу более настроенный список номеров:

for i in '-1 4.5'; do for j in '0 -2.2'; do echo $i $j; done; done 

я получаю выход

-
-1 4.5 0 -2.2 

Есть ли простой способ сделать это?

+3

Удалить кавычки: 'для i в -1 4,5; do для j в 0 -2,2; do echo $ i $ j; сделанный; done' – anubhava

+1

Или, чтобы успокоить overquoters в мире, для i в '-1' '4.5'; do ... ' –

+1

Возможно, также было бы учить рассматривать эффект помещения котировок вокруг обратных ссылок. То есть, окружающая замена процесса кавычками. например: 'for i in '$ (seq 0 3)"; do ... 'в отличие от' for i в $ (seq 0 3); do ... ' –

ответ

1

Использование одиночных клещей препятствует оболочку из tokenizing список прилагается к for цикла:

#!/bin/sh 

for i in -1 4.5 
do for j in 0 -2.2 
    do # -- keeps the highly portable printf utility from 
     # interpreting '-' as an argument 
     printf -- "$i" "$j\n" 
    done 
done 
1
var a = [1,2,3]; 
var b = [1,2,3]; 

for (i in a) { 
    for (j in b) { 
     alert (i + j); 
    } 
} 

Я также создал jsfiddle: http://jsfiddle.net/f8k5tpqm/1/

+1

Как это принято решение для вопроса [tag: shell]? –

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