美文网首页
shell实现根据学号排序

shell实现根据学号排序

作者: Dakini_Wind | 来源:发表于2019-06-16 11:42 被阅读0次

使用shell脚本语言编写一个从键盘输入10名学生(含自己)的姓名、 性别、学号和家庭住址,然后按照学号排序,并将排序后的结果在屏幕上按对齐 的方式打印输出的程序。

方式一:

#!/bin/bash
#借助于awk,eval,sort完成

declare -a name
declare -a sex
declare -a num
declare -a address

for index in {0..9}
do 
read input
eval $(echo $input | awk '{
    print "name["i"]="$1;
    print "sex["i"]="$2;
    print "num["i"]="$3;
    print "address["i"]="$4;
    }' i=$index)
done

info=`
for index in {0..9}
do
    echo "\t${name[$index]}\t${sex[$index]}\t${num[$index]}${address[$index]}"
    echo "\n"
done
`
echo -en $info | sort -k 3

方式二:

#!/bin/bash
#只使用bash完成

declare -a name
declare -a sex
declare -a num
declare -a address
declare -a si

si=(0 1 2 3 4 5 6 7 8 9)

for i in {1..10}
do 
    read -d " " input1
    name[$i]=$input1
    read -d " " input2
    sex[$i]=$input2
    read -d " " input3
    num[$i]=$input3
    read  input4
    address[$i]=$input4

done        


for i in {1..9}
do 
    for j in {1..8}
    do 
        if [ ${num[${si[$j]}]} -gt ${num[${si[$j+1]}]} ] ;then
            temp=${si[$j]}
            si[$j]=${si[$j+1]}
            si[$j+1]=$temp
        fi
    done
done

for i in {1..10}
do
    printf "\t%s\t%s\t%s\t%s\n" "${name[${si[$i]}]}" "${sex[${si[$i]}]}"   "${num[${si[$i]}]}" "${address[${si[$i]}]}" 
done

相关文章

网友评论

      本文标题:shell实现根据学号排序

      本文链接:https://www.haomeiwen.com/subject/penwfctx.html