shell编程必须会的30道题目

linux运维人员必会的30道shell编程面试题


一、序言

前几天一个做开发的朋友发给我一个链接,http://oldboy.blog.51cto.com/2561410/1632876?from=singlemessage&isappinstalled=0

是老男孩出的企业面试题培训叫做:合格linux运维人员必会的30道shell编程面试题及讲解,于是乎,,我打算每个都自己写一遍,,

PS:我是不是闲的蛋疼!!!

 

 

二、开撸

 

 

企业面试题1:(生产实战案例):监控MySQL主从同步是否异常,如果异常,则发送短信或者邮件给管理员。提示:如果没主从同步环境,可以用下面文本放到文件里读取来模拟:
阶段1:开发一个守护进程脚本每30秒实现检测一次。
阶段2:如果同步出现如下错误号(1158,1159,1008,1007,1062),则跳过错误。
阶段3:请使用数组技术实现上述脚本(获取主从判断及错误号部分)

##这个还没写,,因为还要搞mysql主从复制的环境,,写把下面简单的撸了先。

 

 

企业面试题2:
使用for循环在/oldboy目录下通过随机小写10个字母加固定字符串oldboy批量创建10个html文件,名称例如为:

[python] view plain  copy
 
  1. [root@oldboy oldboy]# sh /server/scripts/oldboy.sh  
  2. [root@oldboy oldboy]# ls  
  3. coaolvajcq_oldboy.html  qnvuxvicni_oldboy.html  vioesjmcbu_oldboy.html  
  4. gmkhrancxh_oldboy.html  tmdjormaxr_oldboy.html  wzewnojiwe_oldboy.html  
  5. jdxexendbe_oldboy.html  ugaywanjlm_oldboy.html  xzzruhdzda_oldboy.html  
  6. qcawgsrtkp_oldboy.html  vfrphtqjpc_oldboy.html  

############我的脚本2############################################
[python] view plain  copy
 
  1. [root@cjy linux-20]# vim 2.sh  
  2. #!/bin/bash  
  3.   
  4. WORK_DIR=/oldboy/  
  5.   
  6. create(){  
  7.   
  8.     i=1  
  9.     while (($i<11))  
  10.     do  
  11.         cd $WORK_DIR && touch `tr -dc "a-z"10`_oldboy.html  
  12.         i=$(($i+1))  
  13.     done  
  14. }  
  15.   
  16. check(){  
  17.     if [ -d $WORK_DIR ];  
  18.     then  
  19.         create  
  20.     else  
  21.         mkdir $WORK_DIR  
  22.         create  
  23.     fi  
  24. }  
  25.   
  26. check  

 

[python] view plain  copy
 
  1. [root@cjy linux-20]# ./2.sh  
  2.   
  3. [root@cjy linux-20]# ls /oldboy/  
  4. daijyyadst_oldboy.html  mjmcfvvjcq_oldboy.html  qmgbrihbco_oldboy.html  yrxovjbwlv_oldboy.html  
  5. djfhdphvqf_oldboy.html  mohijpfehs_oldboy.html  xdtspqouln_oldboy.html  
  6. gjczumsnfy_oldboy.html  nfwzssqtus_oldboy.html  yhqruiiota_oldboy.htm  


企业面试题3:请用至少两种方法实现!
将以上文件名中的oldboy全部改成oldgirl(用for循环实现),并且html改成大写。

############我的脚本3_1############################################

 

[python] view plain  copy
 
  1. [root@cjy linux-20]# vim 3_1.sh  
  2. #!/bin/bash  
  3.   
  4. change_name(){  
  5. DIR=/oldboy  
  6. FILE=`ls /oldboy`  
  7. GIRL=_oldgirl.HTML  
  8.   
  9. for i in $FILE  
  10. do  
  11.    c=`echo $i | cut -c 1-10`  
  12.    mv $DIR/$c* $DIR/$c$GIRL  
  13. done  
  14. }  
  15.   
  16. change_name  

 

 

############我的脚本3_2############################################

[python] view plain  copy
 
  1. [root@cjy linux-20]# vim 3_2.sh  
  2. #!/bin/bash  
  3.   
  4. change_name(){  
  5. DIR=/oldboy  
  6. FILE=`ls /oldboy`  
  7. GIRL=_oldgirl.HTML  
  8.   
  9. for i in $FILE  
  10. do  
  11.    c=`echo $i | awk -F '_' '{print $1}'`  
  12.    mv $DIR/$c* $DIR/$c$GIRL  
  13. done  
  14. }  
  15.   
  16. change_name  

 

[python] view plain  copy
 
  1. [root@cjy linux-20]# ./3_1.sh  
  2. [root@cjy linux-20]# ls /oldboy/  
  3. daijyyadst_oldgirl.HTML  mjmcfvvjcq_oldgirl.HTML  qmgbrihbco_oldgirl.HTML  yrxovjbwlv_oldgirl.HTML  
  4. djfhdphvqf_oldgirl.HTML  mohijpfehs_oldgirl.HTML  xdtspqouln_oldgirl.HTML  
  5. gjczumsnfy_oldgirl.HTML  nfwzssqtus_oldgirl.HTML  yhqruiiota_oldgirl.HTML  

 

企业面试题4:
批量创建10个系统帐号oldboy01-oldboy10并设置密码(密码为随机8位字符串)。

############我的脚4############################################

 

[python] view plain  copy
 
  1. [root@cjy linux-20]# vim 4.sh  
  2. #!/bin/bash  
  3.   
  4. USER=oldboy  
  5. create_user(){  
  6.   
  7.     for i in {01..10}  
  8.     do  
  9.          RPASSWD=$(tr -dc [:alpha:] < /dev/urandom |head -c 8)  
  10.          useradd $USER$i  
  11.          echo $RPASSWD|passwd $USER$i --stdin  
  12.          echo $USER$i----$RPASSWD >> /oldboy/userpasswd.txt  
  13.     done  
  14. }  
  15.   
  16. del_user(){  
  17.   
  18.     for j in {01..10}  
  19.     do  
  20.         userdel $USER$j  
  21.         rm -rf /home/$USER$j  
  22.     done  
  23. }  
  24.   
  25. case $1 in  
  26.     create)  
  27.         create_user  
  28.     ;;  
  29.     del)  
  30.         del_user  
  31.     ;;  
  32.     *)  
  33.         echo "Usage:Please use $0 create or $0 del."  
  34.         echo "####################################"  
  35.         echo "create: create user $USER 01-10 and give it random passwd."  
  36.         echo "del: delete $USER 01-10 and /home/$USER 01-10 directory. "  
  37.     ;;  
  38.     esac  

[python] view plain  copy
 
  1. [root@cjy linux-20]# ./4.sh  
  2. Usage:Please use ./4.sh create or ./4.sh del.  
  3. ####################################  
  4. create: create user oldboy 01-10 and give it random passwd.  
  5. del: delete oldboy 01-10 and /home/oldboy 01-10 directory.  
  6.   
  7. [root@cjy linux-20]# ./4.sh create  
  8. 正在创建信箱文件: 文件已存在  
  9. 更改用户 oldboy01 的密码 。  
  10. passwd: 所有的身份验证令牌已经成功更新。  
  11. 正在创建信箱文件: 文件已存在  
  12. 更改用户 oldboy02 的密码 。  
  13. passwd: 所有的身份验证令牌已经成功更新。  
  14. 正在创建信箱文件: 文件已存在  
  15. 更改用户 oldboy03 的密码 。  
  16. passwd: 所有的身份验证令牌已经成功更新。  
  17. 正在创建信箱文件: 文件已存在  
  18. 更改用户 oldboy04 的密码 。  
  19. passwd: 所有的身份验证令牌已经成功更新。  
  20. 正在创建信箱文件: 文件已存在  
  21. 更改用户 oldboy05 的密码 。  
  22. passwd: 所有的身份验证令牌已经成功更新。  
  23. 正在创建信箱文件: 文件已存在  
  24. 更改用户 oldboy06 的密码 。  
  25. passwd: 所有的身份验证令牌已经成功更新。  
  26. 正在创建信箱文件: 文件已存在  
  27. 更改用户 oldboy07 的密码 。  
  28. passwd: 所有的身份验证令牌已经成功更新。  
  29. 正在创建信箱文件: 文件已存在  
  30. 更改用户 oldboy08 的密码 。  
  31. passwd: 所有的身份验证令牌已经成功更新。  
  32. 正在创建信箱文件: 文件已存在  
  33. 更改用户 oldboy09 的密码 。  
  34. passwd: 所有的身份验证令牌已经成功更新。  
  35. 正在创建信箱文件: 文件已存在  
  36. 更改用户 oldboy10 的密码 。  
  37. passwd: 所有的身份验证令牌已经成功更新。  
  38.   
  39. [root@cjy linux-20]# vim /etc/passwd  
  40. oldboy01:x:503:503::/home/oldboy01:/bin/bash  
  41. oldboy02:x:504:504::/home/oldboy02:/bin/bash  
  42. oldboy03:x:505:505::/home/oldboy03:/bin/bash  
  43. oldboy04:x:506:506::/home/oldboy04:/bin/bash  
  44. oldboy05:x:507:507::/home/oldboy05:/bin/bash  
  45. oldboy06:x:508:508::/home/oldboy06:/bin/bash  
  46. oldboy07:x:509:509::/home/oldboy07:/bin/bash  
  47. oldboy08:x:510:510::/home/oldboy08:/bin/bash  
  48. oldboy09:x:511:511::/home/oldboy09:/bin/bash  
  49. oldboy10:x:512:512::/home/oldboy10:/bin/bash  
  50.   
  51. [root@cjy linux-20]# ./4.sh del    #删除用户  

 

企业面试题5:
写一个脚本,实现判断10.0.0.0/24网络里,当前在线用户的IP有哪些(方法有很多

############我的脚5############################################

 

[python] view plain  copy
 
  1. [root@cjy linux-20]# vim 5.sh  
  2. #!/bin/bash  
  3.   
  4. tmp_fifofile=/tmp/$$.fifo  
  5. mkfifo $tmp_fifofile  
  6. exec 6<> $tmp_fifofile  
  7. rm -rf $tmp_fifofile  
  8.   
  9. thread=254  
  10. for ((i=0;i<$thread;i++))  
  11. do  
  12.     echo >&6  
  13. done  
  14.   
  15. for ((i=2;i<255;i++))  
  16. do  
  17. read -u6  
  18.     {  
  19.         ip=172.16.27.  
  20.         ping $ip$i -c 1 >/dev/null && echo $ip$i:live || echo $ip$i:dead >>123  
  21.                echo >&6  
  22.     }&  
  23. done  
  24. wait  
  25. exec 6>&-  
  26.   
  27. exit 0  

[python] view plain  copy
 
  1. [root@cjy linux-20]# ./5.sh &  
  2. [122668  
  3. [root@cjy linux-20]# 172.16.27.11:live  
  4. 172.16.27.23:live  
  5. 172.16.27.25:live  
  6. 172.16.27.27:live  
  7. 172.16.27.28:live  
  8. 172.16.27.24:live  
  9. 172.16.27.26:live  
  10. 172.16.27.21:live  
  11. 172.16.27.31:live  
  12. 172.16.27.30:live  
  13. 172.16.27.37:live  
  14. 172.16.27.54:live  
  15. 172.16.27.61:live  
  16. 172.16.27.80:live  
  17. 172.16.27.254:live  

企业实战题6:请用至少两种方法实现!
写一个脚本解决DOS攻击生产案例
提示:根据web日志或者或者网络连接数,监控当某个IP并发连接数或者短时内PV达到100,即调用防火墙命令封掉对应的IP,监控频率每隔3分钟。防火墙命令为:iptables -I INPUT -s 10.0.1.10 -j DROP。

 

企业实战题7:
开发mysql多实例启动脚本:
已知mysql多实例启动命令为:mysqld_safe--defaults-file=/data/3306/my.cnf &
停止命令为:mysqladmin -u root -poldboy123 -S /data/3306/mysql.sockshutdown
请完成mysql多实例启动启动脚本的编写
要求:用函数,case语句、if语句等实现。

 

企业实战题8:如何实现对MySQL数据库进行分库备份,请用脚本实现

 

企业实战题9:如何实现对MySQL数据库进行分库加分表备份,请用脚本实现



企业面试题10:请用至少两种方法实现!
bash for循环打印下面这句话中字母数不大于6的单词(昆仑万维面试题)。
I am oldboy teacher welcome to oldboy training class.

 

[python] view plain  copy
 
  1. #!/bin/bash  
  2.   
  3.   
  4. echo '###Usage1#####'  
  5. a='I am oldboy teacher welcome to oldboy training class.'  
  6.   
  7. for i in $a  
  8. do  
  9.     NUM=`echo $i |wc -L`  
  10.     if [ $NUM -le 6 ];then  
  11.         echo $i  
  12.     fi  
  13. done  
  14.   
  15.   
  16. echo '###Usage2######'  
  17.   
  18. for i in $a  
  19. do  
  20.     if [ ${#i} -le 6 ];then  
  21.         echo $i  
  22.     fi  
  23. done  

[python] view plain  copy
 
  1. ###Usage1#####  
  2. I  
  3. am  
  4. oldboy  
  5. to  
  6. oldboy  
  7. class.  
  8. ###Usage2######  
  9. I  
  10. am  
  11. oldboy  
  12. to  
  13. oldboy  
  14. class.  

 

 

企业面试题11:开发shell脚本分别实现以脚本传参以及read读入的方式比较2个整数大小。以屏幕输出的方式提醒用户比较结果。注意:一共是开发2个脚本。当用脚本传参以及read读入的方式需要对变量是否为数字、并且传参个数做判断。 
 

企业面试题12:打印选择菜单,一键安装Web服务:

[root@oldboyscripts]# sh menu.sh

    1.[install lamp]

    2.[install lnmp]

    3.[exit]

    pls input the num you want:

要求:

1、当用户输入1时,输出“startinstalling lamp.”然后执行/server/scripts/lamp.sh,脚本内容输出"lampis installed"后退出脚本;

2、当用户输入2时,输出“startinstalling lnmp.”然后执行/server/scripts/lnmp.sh输出"lnmpis installed"后退出脚本;

3、当输入3时,退出当前菜单及脚本;

4、当输入任何其它字符,给出提示“Input error”后退出脚本。

5、要对执行的脚本进行相关条件判断,例如:脚本是否存在,是否可执行等。 

 

[python] view plain  copy
 
  1. #!/bin/bash  
  2.   
  3. echo "1.[install lamp]"  
  4. echo "2.[install lnmp]"  
  5. echo "3.[exit]"  
  6.   
  7. read -t 30 -p "Please input tut the num you want:" a  
  8.   
  9. case $a in  
  10.     1)  
  11.         if  
  12.             [ -f lamp.sh ];then  
  13.                 ./lamp.sh  
  14.                 sleep 3  
  15.                 echo "lamp is installed!"  
  16.         else  
  17.             echo "no lamp.sh!"  
  18.         fi  
  19.     ;;  
  20.   
  21.     2)  
  22.         if  
  23.             [ -f lnmp.sh ];then  
  24.                 ./lnmp.sh  
  25.                 sleep 3  
  26.                 echo "lnmp is installed!"  
  27.         else  
  28.             echo "no lnmp.sh!"  
  29.         fi  
  30.     ;;  
  31.   
  32.     3)  
  33.         exit 0  
  34.     ;;  
  35.   
  36.     *)  
  37.         echo  "Input error"  
  38.         exit 0  
  39. esac  

[python] view plain  copy
 
  1. [root@cjy linux-20]# ./12.sh  
  2. 1.[install lamp]  
  3. 2.[install lnmp]  
  4. 3.[exit]  
  5. Please input tut the num you want:1  
  6. no lamp.sh!  

 


企业面试题13:

1、监控web服务是否正常,不低于3种监控策略。

2、监控db服务是否正常,不低于3种监控策略。
要求间隔1分钟,持续监控。

 

企业面试题14:监控memcache服务是否正常,模拟用户(web客户端)检测。

使用nc命令加上set/get来模拟检测,以及监控响应时间及命中率。
 


企业面试题15:面试及实战考试题:监控web站点目录(/var/html/www)下所有文件是否被恶意篡改(文件内容被改了),如果有就打印改动的文件名(发邮件),定时任务每3分钟执行一次(10分钟时间完成)。
 

企业面试题16:企业案例:写网络服务独立进程模式下rsync的系统启动脚本

例如:/etc/init.d/rsyncd{start|stop|restart} 。
要求:
1.要使用系统函数库技巧。
2.要用函数,不能一坨SHI的方式。
3.可被chkconfig管理。

 

企业面试题17:老男孩教育天津项目学生实践抓阄题目:

好消息,老男孩培训学生外出企业项目实践机会(第6次)来了(本月中旬),但是,名额有限,队员限3人(班长带队)。

因此需要挑选学生,因此需要一个抓阄的程序:

要求:

1、执行脚本后,想去的同学输入英文名字全拼,产生随机数01-99之间的数字,数字越大就去参加项目实践,前面已经抓到的数字,下次不能在出现相同数字。

2、第一个输入名字后,屏幕输出信息,并将名字和数字记录到文件里,程序不能退出继续等待别的学生输入
 

 

企业面试题18:老男孩linux企业面试题:

已知下面的字符串是通过RANDOM随机数变量md5sum|cut-c 1-8截取后的结果,请破解这些字符串对应的md5sum前的RANDOM对应数字?

21029299

00205d1c

a3da1677

1f6d12dd

890684b

 

 

企业面试题19:批量检查多个网站地址是否正常 

要求:shell数组方法实现,检测策略尽量模拟用户访问思路

http://www.etiantian.org

http://www.taobao.com

http://oldboy.blog.51cto.com

http://10.0.0.7 

 

企业面试题20(中企动力)::用shell处理以下内容

1、按单词出现频率降序排序!

2、按字母出现频率降序排序!

the squid project provides a number of resources toassist users design,implement and support squid installations. Please browsethe documentation and support sections for more infomation

 

[python] view plain  copy
 
  1. [root@cjy linux-20]# cat test  
  2. the squid project provides a number of resources toassist users design,implement and support squid installations.Please browsethe   
  3. documentation and support sections for more infomation  

 

 

[python] view plain  copy
 
  1. [root@cjy linux-20]# cat 20_1.sh  
  2. #!/bin/bash  
  3.   
  4. sed -i 's/\,\|\./ /g' test  
  5.   
  6. for i in `cat test`  
  7. do  
  8.     echo $i  
  9. done  

 

 

[python] view plain  copy
 
  1. [root@cjy linux-20]# ./20_1.sh |sort|uniq -c |sort -r  
  2.       2 support  
  3.       2 squid  
  4.       2 and  
  5.       1 users  
  6.       1 toassist  
  7.       1 the  
  8.       1 sections  
  9.       1 resources  
  10.       1 provides  
  11.       1 project  
  12.       1 Please  
  13.       1 of  
  14.       1 number  
  15.       1 more  
  16.       1 installations  
  17.       1 infomation  
  18.       1 implement  
  19.       1 for  
  20.       1 documentation  
  21.       1 design  
  22.       1 browsethe  
  23.       1 a  

[python] view plain  copy
 
  1. [root@cjy linux-20]# cat 20_2.sh  
  2. #!/bin/bash  
  3.   
  4. sed -i 's/\,\|\./ /g' test  
  5.   
  6. for i in `cat test`  
  7. do  
  8.     for j in `echo $i`  
  9.     do  
  10.     echo $j | awk -F '' '{for(i=1;i<=NF;i++)print $i}'  
  11.     done  
  12. done  

 

 

[python] view plain  copy
 
  1. [root@cjy linux-20]# ./20_2.sh |sort |uniq -c|sort -nr  
  2.      19 s  
  3.      17 e  
  4.      16 o  
  5.      14 t  
  6.      12 n  
  7.      12 i  
  8.      11 r  
  9.       9 a  
  10.       8 u  
  11.       7 p  
  12.       7 d  
  13.       6 m  
  14.       4 l  
  15.       4 c  
  16.       3 f  
  17.       2 q  
  18.       2 h  
  19.       2 b  
  20.       1 w  
  21.       1 v  
  22.       1 P  
  23.       1 j  
  24.       1 g  


 

企业面试题21:输出正方形、等腰三角形、直角梯形,见如下内容

http://oldboy.blog.51cto.com/2561410/1718607

 

 

企业面试题22:开发通过web界面展示监控Nginx代理节点状态,效果图如下。

 

 

lvs+keepalived集群部分Shell企业案例:

企业面试题23、【LVS主节点】手工开发ipvsadm管理lvs的脚本ip_vs

   实现:/etc/init.d/lvs {start|stop|restart}

 

企业面试题24、【LVS主节点】模拟keepalived健康检查功能管理LVS节点,

当节点挂掉(检测2次,间隔2秒)从服务器池中剔除,好了(检测2次,间隔2秒)加进来

提示:利用ipvsadm命令实现添加和减少LVS节点。

 

企业面试题25、【LVS客户端节点】开发LVS客户端设置VIP以及抑制ARP的管理脚本

    实现:/etc/init.d/lvsclient {start|stop|restart}

企业面试题26、【LVS备节点】模拟keepalved vrrp功能,监听主节点,如果主节点不可访问则备节点启动并配置LVS实现接管主节点的资源提供服务(提醒:注意ARP缓存) 

 

企业面试题27、请用shell或Python编写一个正方形(oldboy_square.sh),接收用户输入的数字。

例如:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
[root@oldboy ~] # sh oldboy_square1.sh 
Please Enter a number:5
++++++++++
++++++++++
++++++++++
++++++++++
++++++++++
[root@oldboy ~] # sh oldboy_square2.sh  
Please Enter a number:9
■■■■■■■■■
■■■■■■■■■
■■■■■■■■■
■■■■■■■■■
■■■■■■■■■
■■■■■■■■■
■■■■■■■■■
■■■■■■■■■
■■■■■■■■■

 

 

[python] view plain  copy
 
  1. [root@cjy linux-20]# vim 27_1.sh  
  2.   
  3. #!/bin/bash  
  4.   
  5. read -p "Please Enter a number:" a  
  6.   
  7.   
  8. for ((i=1;$i<=$a;i++))  
  9. do  
  10.     for ((j=1;j<=$((2*$a));j++))  
  11.     do  
  12.         echo -e "+\c"  #不换行  
  13.     done  
  14.     echo  
  15. done  

[python] view plain  copy
 
  1. [root@cjy linux-20]# ./27_1.sh  
  2. Please Enter a number:5  
  3. ++++++++++  
  4. ++++++++++  
  5. ++++++++++  
  6. ++++++++++  
  7. ++++++++++  

[python] view plain  copy
 
  1. [root@cjy linux-20]# cat 27_2.sh  
  2. #!/bin/bash  
  3.   
  4. read -p "Please Enter a number:" a  
  5.   
  6.   
  7. for ((i=1;$i<=$a;i++))  
  8. do  
  9.     for ((j=1;j<=$a;j++))  
  10.     do  
  11.         echo -e "■ \c"  #不换行  
  12.     done  
  13.     echo  
  14. done  

[python] view plain  copy
 
  1. [root@cjy linux-20]# ./27_2.sh  
  2. Please Enter a number:9  
  3. ■ ■ ■ ■ ■ ■ ■ ■ ■  
  4. ■ ■ ■ ■ ■ ■ ■ ■ ■  
  5. ■ ■ ■ ■ ■ ■ ■ ■ ■  
  6. ■ ■ ■ ■ ■ ■ ■ ■ ■  
  7. ■ ■ ■ ■ ■ ■ ■ ■ ■  
  8. ■ ■ ■ ■ ■ ■ ■ ■ ■  
  9. ■ ■ ■ ■ ■ ■ ■ ■ ■  
  10. ■ ■ ■ ■ ■ ■ ■ ■ ■  
  11. ■ ■ ■ ■ ■ ■ ■ ■ ■  

 

企业面试题28、请用shell或Python编写一个等腰三角形(oldboy2_triangle.sh),接收用户输入的数字。

例如:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
[root@oldboy ~] # sh oldboy2_triangle.sh 
Please Enter a number:5
     *
    ***
   *****
  *******
*********
[root@oldboy ~] # sh oldboy2_triangle.sh 
Please Enter a number:8
        *
       ***
      *****
     *******
    *********
   ***********
  *************
***************

 

 

[python] view plain  copy
 
  1. [root@cjy linux-20]# cat 28_1.sh  
  2. #!/bin/bash  
  3.   
  4. read -p "Please Enter a number:" a  
  5.   
  6.   
  7. for ((i=1;$i<=$a;i++))  
  8. do  
  9.     for ((h=$((2*$a-2*$i));h>=0;h--))  
  10.     do  
  11.         echo -e " \c"  
  12.     done  
  13.     for ((j=1;j<=$((2*$i-1));j++))  
  14.     do  
  15.         echo -e "*\c"  #不换行  
  16.     done  
  17.     echo  
  18. done  

[python] view plain  copy
 
  1. [root@cjy linux-20]# ./28_1.sh  
  2. Please Enter a number:5  
  3.          *  
  4.        ***  
  5.      *****  
  6.    *******  
  7.  *********  
  8. [root@cjy linux-20]# ./28_1.sh  
  9. Please Enter a number:8  
  10.                *  
  11.              ***  
  12.            *****  
  13.          *******  
  14.        *********  
  15.      ***********  
  16.    *************  
  17.  ***************  

 

企业面试题29、请用shell或Python编写一个画直角梯形程序(oldboy4.sh),接收用户输入的参数n,m

例如:

1
2
3
4
[root@oldboy ~] # sh oldboy4.sh 4 6
****
*****
******

27,28,29三道题参考http://oldboy.blog.51cto.com/2561410/1718607

 

[python] view plain  copy
 
  1. [root@cjy linux-20]# cat 29.sh  
  2. #!/bin/bash  
  3.   
  4. if [[ -n $1 ]] && [[ -n $2 ]];  
  5. then  
  6.   
  7. for ((i=$1;$i<=$2;i++))  
  8. do  
  9.     for ((j=1;j<=$i;j++))  
  10.     do  
  11.         echo -e "*\c"  #不换行  
  12.     done  
  13.     echo  
  14. done  
  15. else  
  16.     echo "No given two int arguments,such as $0 5 6!"  
  17. fi  

[python] view plain  copy
 
  1. [root@cjy linux-20]# ./29.sh 4 6  
  2. ****  
  3. *****  
  4. ******  

 

企业面试题30:写一套简单的企业代码上线发布系统案例,利用SVN对代码及配置文件进行管理,在办公室服务器上从svn取出指定版本的代码和配置,发布到IDC机房分发机服务器上,在分发服务器或者负载均衡器上或者应用服务器本地实现代码平滑发布、上线、回滚脚本(具体设计请参考课堂讲解的企业代码发布方案)。

你可能感兴趣的:(shell编程必须会的30道题目)