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

私はここに伸びていますが、私は何をしたいことは、このようなものだと思う:これはFound2などにFound1w1w2を設定します

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

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

+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行の入力しかない場合、w4w5は設定されません。

関連する問題