美文网首页
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