2016-08-27 4 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

나는 그들 사이에 $ 결과 라인을 가지고 있습니다. 나는 모든 라인마다 새로운 변수를 원한다. 나는 그보다 더 나은 것을 희망한다. – 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" 

이 설정됩니다 w1w2Found2 등으로, Found1에 .

+0

시원하고 멋진 작업, 큰 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 줄의 입력 만있는 경우 w4w5은 설정되지 않습니다.

관련 문제