linux上机复习题(部分答案)

 

上机复习题

Shell命令上机操作题

1. 在当前目录下创建子目录dir1和dir2。

mkdir dir1 

mkdir dir2

2.以短格式查看目录/usr中的文件清单,把该信息重定向到文件my1中。

ls /usr > my1

3. 复制my1文件到两个名为t1.txt和t2.txt的文件中。

cp my1 t1.txt    

cp my1 t2.txt

4. 把t2.txt文件的存取属性设置为对所有用户不可读,不可写和不可执行。

chmod a-rwx t2.txt

5.在当前目录下建立t2.txt文件的符号链接文件ts。

ln –s t2.txt ts

6.在当前目录下创建空文件x1和x2,用长格式显示当前目录信息,并把该信息附加重定向到文件my1中。 

touch x1

touch x2

ls –l >>my1

7. 在当前目录下查看当前系统的进程状态信息,把结果重定向到文件my2中。

ps –ef > my2

8.查看环境变量PS1的值,将结果附加重定向到文件my2中。

echo $PS1 >>test2

9.在当前目录下,查看环境变量LOGNAME值,将结果重定向到文件ss.txt中。

echo $LOGNAME >ss.txt

10. 在当前目录下创建子目录d1,把ss.txt文件复制到子目录d1中。

mkdir d1

cp ss.txt d1

11. 把ss.txt文件复制到文件copy中,然后把ss.txt改名为you1。

cp ss.txt copy

mv ss.txt you1

把you1文件的存取属性设置为对所有用户可读,可写和可执行。

chmod a+rwx test1.txt

13.为系统添加一个组名,组名为pet,然后把文件copy的组名更改为pet。

groupadd pet

chgrp copy pet

14.用长格式显示当前目录,把该信息附加重定向到文件you1中,然后用长格式显示子目录d1中的信息,把该信息附加重定向到文件you1中。

ls –l >>you1

ls d1 –l >>you1

15. 定位man命令的可执行二进制文件的位置,且把定位结果重定向到文件you2中。

whereis –b man >you2

 

16.在当前目录下,使用shell命令查看系统日期和时间,把该信息附加重定向到文件you2中。

date >>you2

17.在当前目录下,查看2012年7月份的月历,把结果重定向到文件he1中。

cal 7 2012 >he1

18. 创建子目录dd和ff,然后把当前目录信息以长格式附加重定向到文件he1中,最后把子目录dd改名为gg。

mkdir dd ff

ls –l >>he1

mv dd gg

19.查看环境变量HOME的值,且把该信息附加重定向到文件he1中。

echo $HOME >>test1

20.复制he1到文件copy1和文件copy2中,对其他用户设置文件copy1具有只读属性且不可写和不可执行。

cp he1 copy1

cp he2 copy2

chmod o+r copy1

chmod o-wx copy1

21.用长格式显示当前目录信息,把该信息附加重定向到文件he1中,删除文件copy1,再用长格式显示当前目录信息,把该信息附加重定向到文件he1中。

ls –l >>he1

rm copy1

ls –l >>he1

22.删除子目录ff,用长格式显示当前目录信息,把该信息附加重定向到文件he1中。

rmdir dd

ls –l >>he1

23. 把copy2文件的内容加上行号后输出到文件copy3中,再把copy3内容重定向到文件he2中。

cat –n copy2 > copy3

cat copy3>he2

24.在当前目录下,用awk程序把文件copy3的每行的第一个字段(即行号)输出,附加重定向到文件he2中。

awk ‘{print $1}’ copy3 >>test2

25.查找/bin目录中以字母c开头的文件,把结果重定向到文件her1中。

find /bin –name “c*” –print >her1

26.查看PATH变量的值,且把该信息附加重定向到文件her1中。

echo $PATH >>her1

 

复制her1文件到另外三个文件中,这三个文件的名称分别为new1,new2,new3。

  cp her1 new1

  cp her1 new2

  cp her1 new3 

28.把new1文件的存取属性设置为对所有用户可读,可写和可执行。

chmod a+rwx new1

 

29. 在当前目录中,创建子目录xyz,把当前目录中的所有文件复制到子目录xyz中。

mkdir xyz

cp *  xyz

用长格式显示当前目录包括点文件在内的所有文件,把该信息附加重定向到文件her1中,然后再以长格式显示目录xyz中包括点文件在内的所有文件,把该信息附加重定向到文件her1中。

ls –la >>her1

ls –la xyz >>her1

31.删除文件new1和new2,用短格式显示当前目录中的所有文件,把该信息重定向到文件her2中。 

rm new1

rm new2

ls >her2

32.在当前目录下,使用shell命令查看当前系统的环境变量值,把这些信息附加重定向到文件her2中。

env>>test2

33 .在当前目录下,查看环境变量MAIL的值,把结果重定向到文件pp.txt中。

echo $MAIL > pp.txt

34.把pp.txt文件的存取属性设置为对所有用户可读,可写和不可执行。

chmod a+rw pp.txt

chmod a-x pp.txt

35. 在当前目录下,创建子目录dir1,把pp.txt文件复制到字目录dir1中hello的文件中。

mkdir dir1

cp pp.tx  dir1/hello

36. 复制pp.txt文件到同一层目录下名为him1的文件中。把变量a赋值为12345,显示变量a的值,且把值附加重定向到him1中。

cp pp.txt him1

a=12345

echo $a >>him1

37.用长格式显示子目录dir1中的信息,把该信息附加重定向到文件him1中。 

ls –l dir >>him1

38.在当前目录中,创建空文件jjj,然后用长格式显示当前目录信息,把该信息附加重定向到文件him1中。

touch jjj

ls –l >>him1

为系统添加两个组,组名分别为ford和wrolf,把/etc/group文件的内容重定向到文件him2中。 

groupadd ford

groupadd wrolf

    cat /etc/group >him2

40.删除组名为ford的组,再把/etc/group文件的内容附加重定向到文件him2中。

groupdel ford

cat /etc/group >>him2

41. 显示当前用户使用的Shell,且把该信息重定向到文件they1中。

echo $SHELL >they1

42.在当前目录下,查看当前的进程状态信息,把信息附加重定向到文件they1中。

ps –ef >> they1

43. 复制文件they1到另外两个文件copy1和copy2中。

cp they1 copy1

cp they1 copy2

44.用长格式显示当前目录信息,把该信息附加重定向到文件they1中。 

ls –l >>they1

45. 删除文件copy1, 把copy2改名为newcopy,用长格式显示当前目录信息,把该信息附加重定向到文件they1中。

rm copy1

mv copy1  newcopy

ls –l >>they1

在屏幕上显示文件/etc/passwd文件的内容,且把该信息输出重定向到文件they2中。

cat /etc/passwd >they2

47. 定位cat命令的可执行二进制文件的位置,且把定位结果附加重定向到文件they2中。

wheris –b cat >> they2

48.在当前目录下,使用shell命令查看当前的磁盘空间信息,把该信息附加重定向到文件they2中。

df >>they2

49. 在当前目录下,输出“hello world”的提示信息,然后把该信息重定向到文件jjj.txt中。

echo “hello world” >jjj.txt

50.显示jjj.txt文件的内容,并把该内容重定向到文件kkk.txt中。然后再次显示jjj.txt文件的内容,并把该内容附加重定向到文件kkk.txt中。

cat jjj.txt >kkk.txt

cat jjj.txt>>kkk.txt

51. 把kkk.txt文件的内容加上行号后,重定向到一个名为them1的文件中。

cat –n kkk.txt >them1

52.把kkk.txt的文件属主改成zhwang。

chown zhwang kkk.txt

53.用长格式显示当前目录信息,把该信息附加重定向到文件them1中。删除文件jjj.txt, 再用长格式显示当前目录信息,且把该信息附加重定向到文件them1中。

ls –l >>them1

   rm jjj.txt

   ls –l >>them1

54  为系统添加两个用户,用户名分别为wang和zhu,把/etc/passwd文件的内容重定向到文件them2中。

   useradd wang

   useradd zhu

cat /etc/passwd > them2

55. 删除用户zhu,把/etc/paswwd文件的内容附加重定向到文本文件them2中,

userdel zhu

   cat /etc/passwd >>them2

56.把2012年12月份的月历输出到文件gg.txt中,用awk程序把gg.txt文件的第2列附加重定向到文件them2中。 

cal 12 2012 >gg,.txt

awk ‘{print $2}’  gg.txt >>them2

57.在当前目录下,以短格式列出目录/dev中的内容,把其内容重定向到文件ttt.txt中,把ttt.txt文件复制到同一目录下名为all1和car的文件中。

ls /dev >ttt.txt

   cp ttt.txt all1

   cp ttt.txt car

58. 用长格式显示当前目录,把该信息附加重定向到文件all1中,删除文件car。

ls –l >>all1

   rm car

59.把ttt.txt文件的存取属性设置为对其他用户可读,可写和可执行,

chmod o+rwx ttt.txt

60. 创建子目录kkk,把ttt.txt文件转移至该kkk子目录中。

mkdir kkk

   mv ttt.txt kkk

61.创建一个空文件fff,把fff文件的属主改为wang。

touch fff

chown wang fff

62.用长格式显示当前目录信息,把该信息附加重定向到文件all1中。再以长格式显示子目录kkk的信息,把该信息附加重定向到文件all1中。

ls –l >>all1

   ls –l kkk >>all1

63. 为系统添加三个用户,用户名分别为和student,worker,docter,把/etc/passwd文件的内容重定向到文本文件all2中。

    useradd student

    useradd worker

    useradd doctor

cat /etc/passwd >all2

64. 为系统添加一个名叫teacher的组,把/etc/group文件的内容附加重定向到文本文件all2中。

    groupadd teacher

    cat /etc/group >>all2

65. 在当前目录下创建空文件a1,把文件a1的存取属性改为“rwxrwxr--”

touch a1

chmod u+rwx g+rwx o-r a1

66.以短格式查看目录/bin中的文件清单,把该信息重定向到文件zhu1中。

ls /bin

ls /bin  >zhu1

 

67. 添加两个用户xyz1,xyz2, 把/etc/passwd文件内容附加重定向到文件zhu1中。

useradd xyz1

useradd xyz2

cat /etc/passwd >>zhu1

68. 把a1文件复制到b1和b2两个文件中。

cp a1 b1

cp a1 b2

69.删除名为xyz1的用户,然后把/etc/passwd文件内容附加重定向到文件zhu1中。

userdel xyz1

cat /etc/passwd 

cat /etc/passwd >>zhu1

70.在当前目录下,用长格式显示当前目录信息,并把该信息附加重定向到文件zhu1中。 

ls -l 

ls -l >>zhu1

71.查看命令nslookup的帮助信息,将结果重定向到文件zhu2中。

man nslookup

man nslookup >zhu2

72.把环境变量PATH的值附加重定向到文件zhu2中。

echo $PATH

echo $PATH >>zhu2

73.查看系统当前日期和时间,将结果重定向到文件wang1中。

date                   

date >wang1           

74. 创建空文件aa, 在当前目录下创建子目录dd。

touch aa                

mkdir dd                

75. 把aa文件复制文件bb中,再复制到子目录dd中名为cc的文件中。

cp aa bb                 

cp aa dd/cc               

76.把文件bb的存取属性设置为对文件属主可读,可写和可执行。对组用户和其他用户可读,不可写和不可执行。

chmod u+rwx bb           

chmod g-rwx o-rwx bb      

77.为系统添加一个组名,组名为cat,然后把文件aa的组名更改为cat。

groupadd cat              

chgrp cat aa               

78.用长格式显示当前目录,把该信息附加重定向到文件wang1中,然后用长格式显示子目录dd中的信息,把该信息附加重定向到文件wang1中。

ls -l                      

ls -l >>wang1             

ls -l dd >>wang1            

79. 查找/bin目录中所有字母v开头的文件,且把定位结果重定向到文件wang2中。

find /bin -name “v*”           

find /bin -name “v*”>wang1    

80.查找ps命令的帮助信息,把该信息附加重定向到文件wang2中。

man ps                       

man ps >>wang2         

81.查看2017年7月份的月历,把结果重定向到文件song1中。

cal 7 2017                   

cal 7 2017 >song1              

82. 创建子目录dd,然后把当前目录信息以长格式附加重定向到文件song1中。

mkdir dd                  

ls -l >>song1               

83.查看当前系统日期和时间信息,且把该信息附加重定向到文件song1中。

date                  

date>>song1              

84.复制song1到文件copy1和文件copy2中,对组用户设置文件copy2具有只读属性且可写和不可执行。

cp song1 copy1           

cp song1 copy2            

chmod g+r copy2          

chmod g-wx copy2        

85.用长格式显示当前目录信息,把该信息附加重定向到文件song1中,删除文件copy2,再用长格式显示当前目录信息,把该信息附加重定向到文件song1中。

ls -l                      

ls -l >>song1             

rm copy2                  

ls -l >>song1               

86.把目录dd改名为gg, 用长格式显示当前目录信息,把该信息附加重定向到文件song1中。

mv dd gg                  

ls -l >>song1             

87. 把系统中所有环境变量的值重定向到文件song2中。

env                     

env >song2             

88.把当前文件系统的有效空间信息,附加重定向到文件song2中。

df                       

df >>song2               

89.显示当前目录的路径,把结果重定向到文件tang1中。

pwd                   

pwd>tang1             

90.查看HOME变量的值,且把该信息附加重定向到文件tang1中。

echo $HOME                 

echo $HOME >>tang1         

91. 复制test1文件到另外两个文件中,这两个文件的名称分别为new1,new2。

cp test1 new1                 

cp test1 new2                  

92.当前目录下,创建目录www,把文件new1复制到www中的文件new3中。

mkdir www              

cp new1 www/new3        

93. 显示当前系统正在运行的进程信息,把该信息附加重定向到文件tang1中。

ps -ef                     

ps -ef >>tang1             

94.用长格式显示当前目录包括点文件在内的所有文件,把该信息附加重定向到文件tang1中。 

ls -a                       

ls -a >>tang1               

95.删除文件new1,用长格式显示当前目录中的所有文件,把该信息重定向到文件tang2中。 

rm new1                  

ls -l >tang2             

96.在当前目录下,输出”hello world”显示信息,把该信息附加重定向到文件tang2中。

echo “hello world”           

echo “hello world ” >>tang2  

vi编辑器上机操作题

1.分别把2016的全年的年历输出到文件f1中,把2017年7月份的月历输出到文件test3中,用vi编辑器一次编辑文件f1和nt3。

把f1文件的4,5,6月所在行开始的7行复制并粘贴到文件nt3的最后一行后。

把文件test3的“July  2017”所在的行删除。

在文件test3的首行前插入一行,输入文字“information of year”。

在文件test3的最后一行后面附加上/bin目录中的文件清单。

 

 

2.把下面一段文字用vi编辑器输入到文本文件bj3中:

Time: PM 3:30 2012.5.30

Place:Computer Hall 408

Lecture:History of Computer Science

把第1行到第3行连续复制3遍。

在第一行前面添加标题“Meeting Notes”

把最后一行的“History”改成“Future”。

 (4)  在最后一行后面添加上2012年5月月历。

 

3.用vi编辑器新建文件文件gd3,输入下面一行语句:

The vi editor was developed at the Univesity of California,Berkeley.

把该行语句复制10行。

把最后一行中出现的所有大写字母均改为相应的小写字母。

在第一行前面插入标题,内容是“vi  history”。

在最后一行附加上当前日期和时间。

 

4.分别把2014年3月输出到文件f1中,把2013年3月份月历输出到文件test3中,用vi编辑器一次编辑文件f1和test3。

把f1文件的第2行到第5行内容复制并粘贴到文件test3的第3行后。

在文件test3的第1行前面插入标题 new  information。

删除文件test3的最后两行。

在文件test3的最后一行后面附加上当前注册的用户信息。

 

5.用ps -ef命令查看进程信息,把结果信息重定向到文本文件wh3中,用vi编辑器编辑该文件。

1)仅仅保留该文件的前面5行,把后面的行都删除。

2)把该文件第1行中的字符串“PID”改成“Process ID”。

3)把第1行内容整体复制到最后一行下面。

4)在最后一行后面附加上2012年5月份的月历。

 

6.用df命令查看文件系统,把结果信息重定向到文本文件nj3中,用vi编辑器编辑该文件。

1)在文件的第1行前面插入一行,添加标题“file system information”。

2)把添加的标题行再复制5遍到最后一行下面。

3)把该文件中的出现的所有%号都删除掉。

4)在最后一行后面附加上当前目录的清单。

 

7.把2012年的5月份的月历重定向到文本文件te3中,用vi编辑器编辑该文件。

1)把文件第一行的标题“May 2012” 改为“year 2012 month 5”。

2)把关于星期的第二行复制到最后一行后面。

3)整体删除日期20到26号所在的行。

4)在最后一行后面附加上当前磁盘上文件系统的信息。

 

8.把2013年的年历重定向到文本文件tt3中,用vi编辑器编辑该文件。

1)删除1月份,2月份和3月份的月历。

2)把4,5,6月的月历整体复制到最后一行。

3)把文件第一行的标题“2013”改为“2013 year”。

4)在最后一行后面附加上2012年6月份的月历。

 

9.把2018年的年历重定向到文本文件qq3中,用vi编辑器编辑该文件。

1)删除从首行开始的9行。

2)把4,5,6月的月历整体复制到最后一行。

3)在第一行前面插入标题“2018 year”。

4)在最后一行后面附加上/etc/group文件的内容。

 

10.把2019年的5月份的月历重定向到文本文件pp3中,用vi编辑器编辑该文件。

1)把文件第一行的标题“May 2019” 改为“This is year 2019 month 5”。

2)把关于是星期几的第二行复制到最后一行后面。

3)整体删除日期16号所在的那一行。

4)在最后一行后面附加上目录/proc的清单内容。

 

11.用vi编辑器编辑新文件test3。

1)在test3文件的第1行输入“hello world ”。

2)接下来附加上文件系统的有效空间信息。

3)然后删除test3文件中的最后1行。

4)把第1行的内容复制5行,放到test3文件的最后一行后面。

 

12.用env命令查看环境变量,把结果信息重定向到文本文件dd3中,用vi编辑器编辑该文件。

(1) 仅仅保留该文件的前面5行,把后面的行都删除。

(2) 在该文件第1行前面插入一行“environment variable”。

(3) 把新的第1行内容整体复制5行到最后一行下面。

(4) 在最后一行后面附加上当前系统日期和时间。

 

Shell编程上机操作题

1编写Shell程序,首先显示提示信息:“below is the information of command line”,然后显示命令行中的程序名称,接着一行显示实际给出的所有实参字符串,最后一行再显示命令行上参数的个数。

echo "below is the infomaion of command line"      

echo $0                                            

echo $*                                            

echo $#                                            

 

2编写Shell程序,首先显示进程状态信息,接着把值12345赋给变量A1,然后输出一行信息“the value of A1 is: ”,然后输出变量A1的值。

ps –ef                                            

A1=12345                                          

echo "the vlue of A1 is:"                         

echo $A1                                         

 

3编写Shell程序test4,首先着输出一行提示信息“please input a integer”,然后从键盘读入一个整数,接着显示该整数值,最后显示文件test4的内容。

echo "please input a integer"                  

read x                                         

echo $x                                        

cat test4                                        

 

4编写Shell程序,首先显示一行信息:“input x and y”,然后从键盘读入两个整数,接着显示“the sum of  two input is ”,然后把两个数的和输出到屏幕上,最后输出系统当前日期和时间信息。

echo "input  x and y"                      

read x y                                  

echo "the sum of two input is"            

((s=x+y))                                 

echo $s                                   

date                                       

 

5编写Shell程序,首先输出一行“this is the information of users”的提示信息,接着查看当前注册的用户信息,然后查找目录/bin中的所有以字母l开头的文件,最后显示当前工作路径。

echo "this is the infomation of users"      

who                                       

find /bin -name "l*" –print               

pwd                                       

 

6编写Shell程序,首先输出提示信息"please input x",然后从键盘读入一个整数,接着判断该数是否大于11,如果是则输出2012年12月份的月历,否则输出2013年11月份的月历。

echo "please input x"                

read x                               

if ((x>=11))                         

then                                 

cal 12 2012                          

else                                 

cal 11 2013                          

fi  

 

7编写Shell程序,首先输出一行提示信息:“please input a integer ”,接着从键盘输入一个整数,然后把该整数乘以10之后的值输出。

echo "please input a number "            

read x                                   

((x=x*10))                               

echo $x              

 

8编写Shell程序,首先输出一行提示信息:“hello world”,接着给变量A赋值54321,然后把变量A的值减去10,接着输出变量A的值,最后显示该文件的内容。

echo "hello world "       

A=54321                   

((A=A-10))                

echo $A                   

cat test4                 

 

9编写Shell程序,首先显示日期和时间,然后显示当前工作目录,接着添加一个名为ecnomics的组,最后查找/usr目录下字母m开头的文件。

date                                               

pwd                                                

groupadd ecnomics                                  

find /usr -name “m*”                               

 

10 编写Shell程序,首先显示命令ps的帮助信息,然后查看当前注册用户,查询域名 HYPERLINK "http://www.ntu.edu.cn" www.ntu.edu.cn 对应的IP地址,最后显示“all done”信息。

man ps                                           

w                                                

nslookup www.ntu.edu.cn                          

echo “all done “                                 

 

11编写Shell程序,首先输出一行“hello everybody”的提示信息,接着添加一个名为xyz的用户信息,然后查找目录/proc中的所有以字母c开头的文件,最后删除名为yyy的文件。

echo “hello everybodyman”                        

useradd xyz                                      

find /proc -name “c*”                            

rm -f  yyy                                       

 

12编写Shell程序test4,首先显示当前与主机连接的主机名和网卡硬件信息,然后查询域名 HYPERLINK "http://www.edn.cn" www.edn.cn 对应的IP地址,接着查找/bin目录下属于用户root的文件,最后显示文件test4的内容。

arp                       

nslookup www.edu.cn       

find /bin -user root       

cat test4                 

 

 

13编写Shell程序,使其执行时在屏幕上输出整数1~50,但其中位于20和30之间的偶数不输出。

for ((i=1;i<=50;i++))                   

do

if ((i>=20 && i<=30 && i%2==0))       

then continue                         

fi                                   

echo $i                              

done                                 

 

14编写Shell程序,在屏幕上输出10行,第一行输出1个“*”号,第二行输出3个“*”号,第二行输出5个“*”号,依此类推。

for ((i=1;i<=10;i++))                   

do               

for ((j=1;j<=2*i-1;j++))                 

do

echo -n "*"                          

done                               

echo                               

done                                

 

15编写Shell程序,输入一批正整数(以0为结束标志),请统计其中奇数的个数,并把统计结果输出。

sum=0                                             

echo "please enter the interger,ended by 0"                

read num                                          

while((num!=0))                                    

do

     if((num%2==1))                               

     then ((sum=sum+1))                            

     fi

     read num                                     

done

echo "the number of ji shu is $sum"                     

 

16 编写Shell程序,求1*1+2*2+3*3+…….+50*50的总和。

sum=0                         

for ((i=1;i<=50;i++))              

do

((ji=i*i))                       

((sum=sum+ji))                 

done

echo $sum                        

 

17编写Shell程序,列出等差数列1,3,5,7,9,…的前20项及其总和。(上机)

n=1                                                

s=0                                                

for ((i=1;i<=20;i++))                              

do                                                 

echo $n                                            

((s=s+n))                                          

((n=n+2))                                          

done

echo "sum=$s"                                      

 

18编写Shell程序,把100分转换为5级计分制,从键盘输入百分值,根据情况,显示具体的等级,其中90-100之间对应A,80-89之间对应B,70-79之间对应C,60-69之间对应D,60以下对应E。

echo "please input x="                            

read x                                            

if(($x<=100 && $x>=90))                           

then

echo "A"

else

if(($x>=80 && $x<=89))                            

then

   echo "B"

else

   if(($x>=70 && $x<=79))                         

   then 

       echo "C"

   else

       if(($x>=60 && $x<=69))                     

       then

       echo "D"

else

        echo "E"                                       

       fi

    fi

fi

fi

 

19编写Shell程序,在屏幕上输出如下格式的九九表。

1*1=1

2*1=2 2*2=4 

……………….

8*1=8 8*2=16 8*3=24 8*4=32 8*5=40 8*6=48 8*7=56 8*8=64 

9*1=9 9*2=18 9*3=27 9*4=36 9*5=45 9*6=54 9*7=63 9*8=72 9*9=81 

 

for ((i=1;i<=9;i++))              

do

for ((j=1;j<=i;j++))                     

do

((b=i*j))                        

echo -n "$i*$j=$b "              

done

echo                              

done

 

20编写程序test5,对命令行传给它的数字参数求和并显示结果,例如

用户键入test5 10 20 30回车,则显示如下:

10 + 20 + 30 = 60   

count=$#                                         

s=0                                              

i=1                                              

while [ $i -le $count ]                          

do

((i=i+1))                                        

echo -n "$1"                                     

((s=s+$1))                                       

shift                                            

if [ $i -le $count ]                             

then

echo -n "+"                                      

fi

done

echo "=$s"                                       

 

21编写程序test5,对命令行传给它的数字参数求积并显示结果,例如用户键入test5 2  4  3后回车,则屏幕显示如下:2 * 4 * 3 = 24。

count=$#                                         

s=1                                              

i=1                                              

while [ $i -le $count ]                          

do

((i=i+1))                                        

echo -n "$1"                                     

((s=s*$1))                                       

shift                                            

if [ $i -le $count ]                             

then

echo -n "*"                                      

fi

done

echo "=$s"                                       

 

22编写Shell程序test5,使之从命令行接受数字,输出最大值,例如,键入test5 1 2 3,则屏幕显示:the largest number is : 3。

n=$#                                              

if (($#<1))

then echo "error number"

     exit

else

max=$1                                            

while ((n>=1))                                    

do                                                  

if (($1>=max))                                    

then max=$1                                       

fi

shift                                             

((n=n-1))                                         

done

echo " the largest number is :$max"                                   

fi

 

23编写程序test5,使之从命令行接受数字,输出最小值,例如,键入test5 1 2 3屏幕显示:the smallest number is : 1。

n=$#                                              

if (($#<1))

then echo "error number"

     exit

else

min=$1                                            

while ((n>=1))                                    

do                                                  

if (($1<=min))                                    

then min=$1                                       

fi

shift                                             

((n=n-1))                                         

done

echo " the smallest number is : $min"                                   

fi

 

24编写Shell程序,求1!+ 2!+ 3!+….+ 10!的值。

s=0                                 

echo "please input number:"

read x

for ((i=1;i<=x;i++))                

do

t=1                                 

for ((j=1;j<=i;j++))                

do

((t=t*j))                           

done

((s=s+t))                           

done

echo "the sum is $s"                

 

PAGE   \* MERGEFORMAT8

 

 

PAGE  

 

 

PAGE  8

 

 

 

 

 

 

 

你可能感兴趣的:(Linux)