9月13日-9月15日课程作业(练习)
5、写一个脚本:如果某路径不存在,则将其创建为目录;否则显示其存在,并显示内容类型;(不要怀疑,就是这么简单)
1 #!/bin/bash
2 #
3 #
4 if [ $# -ne 1 ];then
5 echo "please input one parameter"
6 exit 3
7 fi
8
9 if [ -e $1 ];then
10 echo $(file $1)
11 else
12 mkdir -p $1
13 echo "make directory:"$1
14 fi
6、写一个脚本,完成如下功能;判断给定的两个数值,孰大孰小;给定数值的方法:脚本参数,命令交互;(使用read,依然如此简单)
1 #!/bin/bash
2 #
3 #
4 if ! [ $# -eq 0 ];then
5 if [ $# -lt 2 ];then
6 echo "At leaset two parameter input"
7 exit 3
8 fi
9 anum=$1
10 bnum=$2
11 if [ $anum -gt $bnum ];then
12 echo $anum">"$bnum
13 else
14 echo $bnum">"$anum
15 fi
16 else
17 read -p "please input number a:" anum
18 read -p "please input number b:" bnum
19 if [ $anum -gt $bnum ];then
20 echo $anum">"$bnum
21 else
22 echo $bnum">"$anum
23 fi
24
25 fi
7、求100以内所有奇数之和(至少用3种方法。是的这是我们的作业^_^)
方法一:
1 #!/bin/bash
2 #
3 #
4 for i in {1..100};do
5 if ! [ $[$i%2] -eq 0 ];then
6 let sum+=$i
7 fi
8 done
9 echo $sum
10
11
方法二:
1 #!/bin/bash
2 #
3 #
4 i=1
5 while [ $i -le 100 ];do
6 if ! [ $[$i%2] -eq 0 ];then
7 let sum+=$i
8 fi
9 let i++
10 done
11 echo $sum
方法三:
1 #!/bin/bash
2 #
3 #
4 i=1
5 until [ $i -gt 100 ];do
6 if ! [ $[$i%2] -eq 0 ];then
7 let sum+=$i
8 fi
9 let i++
10 done
11 echo $sum
8、写一个脚本实现如下功能:
(1) 传递两个文本文件路径给脚本;
(2) 显示两个文件中空白行数较多的文件及其空白行的个数;
(3) 显示两个文件中总行数较多的文件及其总行数;
1 #!/bin/bash
2 #
3 apath=$1
4 bpath=$2
5 anum=0
6 bnum=0
7
8 if [ $# -lt 2 ];then
9 echo "please input enough parameter"
10 exit 3
11 fi
12
13 anum=$(egrep "^$" $apath | wc -l)
14 bnum=$(egrep "^$" $bpath | wc -l)
15
16 if [ $anum -gt $bnum ];then
17 echo "MAX space line file is:"$apath" Total space line:"$anum
18 elif [ $anum -lt $bnum ];then
19 echo "MAX space line file is:"$bpath" Total space line:"$bnum
20 else
21 echo "The space line "$apath" = "$bpath" Total space line:"$bnum
22 fi
23
24 anum=0
25 bnum=0
26 anum=$(cat $apath| wc -l)
27 bnum=$(cat $bpath| wc -l)
28
29 if [ $anum -gt $bnum ];then
30 echo "MAX line file is:"$apath" Total line:"$anum
31
32 elif [ $anum -lt $bnum ];then
33 echo "MAX line file is:"$bpath" Total line:"$bnum
34 else
35 echo "The 2 file lines count is the same, Total line:"$bnum
36 fi
9、写一个脚本
(1) 提示用户输入一个字符串;
(2) 判断:如果输入的是quit,则退出脚本;否则,则显示其输入的字符串内容;
1 #!/bin/bash
2 #
3 #
4 read -p "please input a char:" achar
5
6 if [ "$achar" == "quit" ];then
7 exit 3
8 else
9 echo $achar
10 fi
10、写一个脚本,打印2^n表;n等于一个用户输入的值;(不好意思,我调皮了)
1 #!/bin/bash
2 #
3 #
4 if ! [ $# -eq 1 ];then
5 echo "please input one parameter"
6 exit 3
7 fi
8
9 results=0
10 chars=2
11
12 for i in $(seq 1 $1);do
13 if [ $i == "1" ];then
14 chars+="x1"
15 else
16 chars+="x2"
17 fi
18 results=$[2**$i]
19 echo $chars"="$results
20 if [ $i == "1" ];then
21 chars=2
22 fi
23 done
11、写一个脚本,写这么几个函数:函数1、实现给定的两个数值的之和;函数2、取给定两个数值的最大公约数;函数3、取给定两个数值的最小公倍数;关于函数的选定、两个数值的大小都将通过交互式输入来提供。
1 #!/bin/bash
2 #
3 #求两数之和
4 function two_num_count(){
5 read -p "please input two num:" a b
6
7 if [ -n "$a" -a -n "$b" ];then
8 counts=$[$a+$b]
9 echo $counts
10 return 3
11 else
12 echo "not enough parameter"
13 exit 22
14 fi
15 }
16
17
18 #求两数最大公约数
19 function maxx(){
20 local a
21 local b
22 local c
23 local aold
24 local bold
25
26 read -p "please input two num:" a b
27 if [ -n "$a" -a -n "$b" ];then
28 aold=$a
29 bold=$b
30 c=$[$a%$b]
31 while [ $c -ne 0 ];do
32 a=$b
33 b=$c
34 c=$[$a%$b]
35 done
36 echo $aold" and "$bold" GCD is:"$b
37 else
38 echo "not enough parameter"
39 exit 22
40 fi
41 }
42
43 #求两数最小公倍数
44 function minx(){
45 #最小公倍数=axb/ab的最大公约数
46 #求最大公约数开始
47 local a
48 local b
49 local aold
50 local bold
51 local c
52 local c1
53
54 read -p "please input two num:" a b
55 if [ -n "$a" -a -n "$b" ];then
56 aold=$a
57 bold=$b
58 c=$[$a%$b]
59 while [ $c -ne 0 ];do
60 a=$b
61 b=$c
62 c=$[$a%$b]
63 done
64 #求最大公约数结束
65 #求最小公倍数开始
66 c1=$[$aold*$bold/$b]
67 echo $aold" and "$bold" LCM is:"$c1
68 #求最小公倍数结束
69 else
70 echo "not enough parameter"
71 exit 22
72 fi
73
74 }
75
76
77 echo "please input num to select function:"
78 echo "1.两数值求和(Two number sum)"
79 echo "2.求两数最大公约数(GCD)"
80 echo "3.求两数最小公倍数(LCM)"
81 read -p ":" snum
82
83 if [ -n $snum ];then
84 case $snum in
85 1)
86 two_num_count
87 ;;
88 2)
89 maxx
90 ;;
91 3)
92 minx
93 ;;
94 *)
95 echo "Please select the correct options"
96 exit 22
97 esac
98 else
99 echo "please choose"
100 exit 22
101 fi