使用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
网友评论