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"</dev/urandom |head -c 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代理節點狀態,效果圖如下。

wKioL1Z2j3nCbtimAADO--T7ahw342.jpg


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機房分發機服務器上,在分發服務器或者負載均衡器上或者應用服務器本地實現代碼平滑發佈、上線、回滾腳本(具體設計請參考課堂講解的企業代碼發佈方案)。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章