将变量拆分为line并创建一个新变量

时间:2016-08-27 09:58:05

标签: bash

我在变量中有结果,我需要每一行都有一个新变量。所以有几次相同。

我之间有变量$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

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:-1)

我在这里伸展,但我认为你想要的是这样的:

onSaveInstanceState

这会将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等。