這本書沒有答案,給作者發郵件問了,他就沒有提供答案。所以只好自己做題了
第五章
5.1
Q Cai-English-1984-Jiangsu-7
Q Cai-English-1984-Jiangsu-7
Q Cai-English-1984-Jiangsu-7
Q Cai-English-1984-Jiangsu-7
Q Cai-English-1984-Jiangsu-7
Q Cai-English-1984-Jiangsu-7
Q Cai-English-1984-Jiangsu-7
cat passwd|sort -r -n -t":" -k3 |awk -F":" '{print $1"\t"$3,$4,$5}'
第八章
8.1 1~100內偶數相加,使用for,while,until分別實現。
#!/bin/bash#use forsum1=0for ((i=1;i<=100;i++))do if [ $(($i%2)) -eq 0 ] then sum1=$(($sum1+$i)) fidoneecho "sum1="$sum1#use whilesum2=0j=0while [ $j -le 100 ]do sum2=$(($sum2+$j)) j=$(($j+2))doneecho "sum2="$sum2#use untilsum3=0k=0until [ $k -gt 100 ]do sum3=$(($sum3+$k)) k=$(($k+2))doneecho "sum3="$sum3
8.2 用while實現從命令列讀取字串,知道輸入的字串為句號為止。#!/bin/bashread -p "please input:" argswhile [ "$args" != "." ]do read -p "not right,please input:" argsdoneecho "right!"8.3 不相同
8.4 用for 實現輸出2,4,8,16,32,64,用while和until同樣實現#!/bin/bashi=2printf "%d\t" $ifor((j=1;j<=5;j++))do i=$(($i+$i)) printf "%d\t" $idoneprintf "\n"8.5 迴圈實現從1開始疊加,直到和結果大於2000為止#!/bin/bashi=1sum=0while [ "a" = "a" ]do sum=$(($sum+$i)) echo $sum if [ $sum -ge 2000 ] then break fidone8.6 100以內被3整除的數,每行顯示8個。#!/bin/bashj=1for ((i=1;i<=100;i++))do if [ $(($i%3)) -eq 0 ] then printf "%d" $i if [ $j -lt 8 ] then printf "\t" let "j++" else printf "\n" j=1 fi fidoneprintf "\n"
8.7 列印*圖形。
*
***
*****
*******
*********
#!/bin/bash
i=0
k=1
for((j=1;j<=6;j++))
do
while [ $k -lt $i ]
do
echo -n "*"
k=$(($k+1))
done
printf "\n"
i=$(($i+2))
k=1
done
8.8 輸入整數,計算各位元字之和,判斷是否能被9整除,此和能,則此數能,輸出結果。#!/bin/bashread -p "input a number:" numsum=0j=$numwhile [ $num -gt 0 ]do j=$num%10 num=$(($num/10)) sum=$(($sum+$j))doneecho "sum="$sumif [ $(($sum%9)) -eq 0 ]then echo "yes,the number can be divisible by 9"else echo "no,the number cannot be divisible by 9"fi
8.9 提示輸入一些整數,計算這些整數中奇數之和與偶數之和
8.10 判斷一個整數是否為質數。素數(偶數只有2是素數,奇數並且不能被任何一個小於或等於它平方根的奇數整除,則是素數)
#!/bin/bash
read -p "input:" in
if [ $(($in%2)) -eq 0 ]
then
if [ $in -eq 2 ]
then
echo "yes"
else
echo "no"
fi
else
for ((i=1;i<$in;i++))
do
if [ $(($in%$i)) -eq 0 ]
then
echo "no"
exit 0
fi
done
fi
echo "yes"
此方法未最佳化。