2016-08-27 7 views
0

У меня есть переменная с результатами, мне нужна каждая строка новой переменной. Так что несколько раз.Разделить переменную на строку и создать новую переменную

У меня есть переменная $results линии между собой. Я хочу, чтобы для каждой строки была новая переменная. Надеюсь, это так лучше.

Input from $results: 
Found1 
Found2 
Found3 
Found4 
Found5 
etc... 

Output: 
w1 Found1 
w2 Found1 
w3 Found1 
w4 Found1 
w5 Found1 
w1 Found2 
w2 Found2 
w3 Found2 
w4 Found2 
w5 Found2 
w1 Found3 
w2 Found3 
w3 Found3 
w4 Found3 
w5 Found3 

>

zahl=$(echo "$results" | wc -l) 

if [ "$zahl" -ge "5" ];then 
echo "over 5"; 
exit 1 
else 
for z in $results 
do 
w1=$(echo $z | cut -d" " -f1) 
w2=$(echo $z | cut -d" " -f2) 
w3=$(echo $z | cut -d" " -f3) 
w4=$(echo $z | cut -d" " -f4) 
w5=$(echo $z | cut -d" " -f5) 
echo "$w1" 
echo "$w2" 
echo "$w3" 
echo "$w4" 
echo "$w5" 
done 
fi 
+1

Трудно сказать, что вы просите ... –

+0

У меня есть переменная $ results lines между собой. Я хочу, чтобы для каждой строки была новая переменная. Я надеюсь, что это так лучше – rmounton

+0

Просьба указать пример ввода (что содержит '$ results'?) И ожидаемый результат, чтобы мы могли воспроизвести и помочь вам. –

ответ

-1

Я растяжку здесь, но я думаю, что вы хотите что-то вроде этого:

i=1 
for z in $results; do 
    eval "w$i=\"\$z\"" 
    ((i++)) 
done 

echo "$w1" 
echo "$w2" 
echo "$w3" 
echo "$w4" 
echo "$w5" 

Это установит w1 в Found1, w2 в Found2 и т.д. .

+0

cool, nice working, big thx – rmounton

+0

Не используйте 'eval'. – chepner

+0

@chepner, это особенность языка, как и любая другая. Я бы согласился, что это может повредить вам при неправильном использовании, но сказать «не используйте его» просто неправильно. –

0
zahl=$(echo "$results" | wc -l) 

if [ "$zahl" -gt "5" ];then 
    echo "over 5"; 
    exit 1 
else 
    for v in w1 w2 w3 w4 w5; do 
    IFS= read -r "$v" || { unset "$v"; break; } 
    done <<< "$results" 
fi 

Если есть только, скажем, 3 строки ввода, то w4 и w5 не будут установлены.

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