Writing shell script to print a certain number of

2020-05-09 03:46发布

I have 5 variables and each variables contains five values.I want to print five lines with the five values from five variables one by one For example

$a=1 2 3 4 5
$b=4 2 3 4 5
$c=8 9 7 6 5
$d= 8 7 6 5 4
$e=5 6 7 3 3

I want to print five lines in this format

My options was a=1,b=4,c=8,d=8and e=5

My  options was a=2,b=2,c=9,d=7 and e=6

and so on upto five values.

I got confused in using the loops.Can anyone help me to provide loops in script to obtain the following output.

3条回答
成全新的幸福
2楼-- · 2020-05-09 04:24

Using this awk command with a bash loop:

for i in {1..5}; do
awk '{printf "My options was a=%d, b=%d, c=%d, d=%d and e=%d\n", $1, $2, $3, $4, $5}' <<< $(awk '{print $'$i'}' <(echo -e "$a\n$b\n$c\n$d\n$e") | tr $'\n' ' '); done

Output:

$ a='1 2 3 4 5'
$ b='4 2 3 4 5'
$ c='8 9 7 6 5'
$ d='8 7 6 5 4'
$ e='5 6 7 3 3'
$ for i in {1..5}; do
awk '{printf "My options was a=%d, b=%d, c=%d, d=%d and e=%d\n", $1, $2, $3, $4, $5}' <<< $(awk '{print $'$i'}' <(echo -e "$a\n$b\n$c\n$d\n$e") | tr $'\n' ' '); done
My options was a=1, b=4, c=8, d=8 and e=5
My options was a=2, b=2, c=9, d=7 and e=6
My options was a=3, b=3, c=7, d=6 and e=7
My options was a=4, b=4, c=6, d=5 and e=3
My options was a=5, b=5, c=5, d=4 and e=3
查看更多
你好瞎i
3楼-- · 2020-05-09 04:30
a="1 2 3 4 5"
b="4 2 3 4 5"
c="8 9 7 6 5"
d="8 7 6 5 4"
e="5 6 7 3 3"

for i in $(seq 1 5); do
    echo -e "My options was \c"
    echo -e "a=$(echo $a | cut -f$i -d' ')\c"
    echo -e "b=$(echo $b | cut -f$i -d' ')\c"
    echo -e "c=$(echo $c | cut -f$i -d' ')\c"
    echo -e "d=$(echo $d | cut -f$i -d' ') and \c"
    echo -e "e=$(echo $e | cut -f$i -d' ')"
done
查看更多
\"骚年 ilove
4楼-- · 2020-05-09 04:35

If you transpose the matrix, this is really simple, portable, and idiomatic.

while read -r a b c d e; do
    : stuff with "$a", "$b", etc
done <<____
    1 4 8 8 5
    2 2 9 7 6
    3 3 7 6 7
    4 4 6 5 3
    5 5 5 4 3
____

Notice how the first column enumerates the a values, the second, the bs, etc.

查看更多
登录 后发表回答