當前位置:首頁 » 編程軟體 » shell腳本面試真題

shell腳本面試真題

發布時間: 2024-08-24 06:16:51

Ⅰ 9個實戰及面試常用Shell腳本編寫

實戰必備,面試加分!</ 了解如何編寫高效、清晰的Shell腳本,讓它們成為你技能庫中的寶貴財富。下面,我們將深入探討9個實用場景,每個腳本都經過精心設計,旨在提升你的編程技巧和面試表現。


1. 前置准備</


確保腳本的正確執行,從一開始就註明解釋器:#!/bin/bash。保持良好的編程習慣,使用四個空格進行縮進,每行代碼後添加註釋,清晰表達功能。


2. 變數管理</


變數命名有講究:全局變數首字母大寫,如MY_GLOBAL_VAR;局部變數首字母小寫,如myLocalVar。函數名保持小寫,反映其功能,如color_output。


3. 調試利器</


在調試過程中,使用set -e確保非零退出,遇到錯誤立即停止。而set -x則能列印執行過程,幫助你追蹤問題。


4. 實用腳本示例</



  • 隨機字元串與數字生成</: random_string.sh與random_number.sh,生成8位的隨機字元串和數字。

  • 顏色輸出函數</: color_output.sh,增加腳本輸出的可讀性。

  • 批量管理用戶</: 創建新用戶的簡潔腳本。


5. 系統管理監控</



  • 軟體包檢查</: 確保關鍵服務已安裝的便捷工具。

  • 服務狀態檢查</: 用Shell快速查看服務運行狀況。

  • 主機存活狀態檢測</: 採用多種方法檢測網路可達性,如ping失敗計數。


6. 性能監控</



  • CPU利用</: 使用vmstat深入分析。

  • 內存監控</: 保持內存使用在合理范圍內。

  • 硬碟監控</: 實時監控磁碟使用情況。


7. 磁碟監控批量部署</: 通過配置文件,批量監控多台主機的磁碟。


8. 網站可用性檢查</



  • URL健康檢查</: 對網站進行快速驗證。

  • 連續檢測</: 通過類似ping的邏輯,確保網站穩定可訪問


結語</


以上腳本實戰性強,不僅適用於日常運維,也是面試中常被問及的內容。記住,學習編程不僅要動手寫,還要理解背後的邏輯。通過實踐,你將真正掌握Shell腳本的強大。祝你在學習和面試中取得成功!

Ⅱ 現在很多企業招會linux shell腳本編程的人,請問都要用Linux shell做一些什麼工作啊

SHELL編程一方面做開發,設計一些LINUX平台的工具,一方面用SHELL做腳本是為了伺服器的日常管理,可以批量化自動管理,解決了手工管理的煩瑣,開發方面不太了解,管理方便就是編寫腳本,裡面一般都是些LINUX的命令語句和變數,可以加入到計劃任務,然後到某個時候開始執行腳本做你想要的操作,不需要你沒個時刻都要去自己手工做了

Ⅲ 經典的shell腳本面試題

經典的Shell腳本面試題答案概要:

在Shell腳本面試中,面試官通常會考察基礎的腳本操作和理解。以下是一些關鍵知識點的簡要概述:

1. 參數傳遞:腳本通過命令行參數傳遞,如`$1`、`$2`等。例如,復制文件腳本會使用`$1`源文件名和`$2`目標地址。

2. 參數使用:獲取命令行參數後,可以進行計算或操作,如復制文件、計算數字等。

3. 腳本名稱獲取:使用`$0`獲取腳本名稱。

4. 命令檢查:`$?`檢查前一個命令的執行狀態。

5. 文件操作:`tail -n 1`獲取文件最後一行,`head -n 1`獲取第一行,`awk`提取特定欄位。

6. 函數定義:通過`function`關鍵字定義函數,如`function add() { sum=$(( $1 + $2 )); }`。

7. 字元串操作:`echo $str1$str2`拼接字元串,`expr`進行整數相加。

8. 文件存在檢查:`test -f file`檢查文件存在。

9. 循環結構:`for`、`while`、`until`循環用於遍歷或條件控制。

10. 腳本解釋:`#!/bin/bash`指定腳本使用的解釋器。

11. 文本文件操作:`sed`或`awk`用於讀取特定行,如第10行。

12. 注釋符號:`#`用於在Shell腳本中添加註釋。

13. 變數操作:`export`使變數在子shell可見,`echo ${var:5}`提取變數的一部分。

14. 輸出重定向:`> log.txt`將輸出重定向到文件,`echo $var | cut -d: -f2`獲取變數的特定部分。

15. 命令理解:`[ -z "$var" ] && echo 0 || echo 1`條件判斷結果。

16. 標准輸入輸出:`cat file.txt`查看內容,`2>&1`合並標准輸出和錯誤。

17. 數組和索引:數組定義、讀取和操作,如`arr=(1 2 3)`和`echo ${arr[0]}`。

18. 輸入獲取:通過命令行參數或`read`命令從用戶接收輸入。

19. 高級功能:`expect`用於自動化互動式任務,如用戶界面操作。

20. 實踐應用:涉及實際場景的問題,如游戲腳本、部署腳本等,展示了Shell腳本的實用性和靈活性。

這些知識點展示了Shell腳本的基礎架構,是面試中常被考察的內容。

Ⅳ 分享70個經典的 Shell 腳本面試題與答案

我們為你的面試准備選擇了 70 個你可能遇到的 shell 腳本面試問題及解答。了解腳本或至少知道基礎知識對系統管理員來說至關重要,它也有助於你在工作環境中自動完成很多任務。在過去的幾年裡,我們注意到所有的 linux 工作職位都要求腳本技能。

1) 如何向腳本傳遞參數 ?

./script argument

例子: 顯示文件名稱腳本

(LCTT 譯註:謝謝某匿名訪客的提醒,原題有誤,修改之。)

2) 如何在腳本中使用參數 ?

第一個參數 : 2

例子 : 腳本會復制文件(arg1) 到目標地址(arg2)

3) 如何計算傳遞進來的參數 ?

4) 如何在腳本中獲取腳本名稱 ?

5) 如何檢查之前的命令是否運行成功 ?

6) 如何獲取文件的最後一行 ?

7) 如何獲取文件的第一行 ?

8) 如何獲取一個文件每一行的第三個元素 ?

9) 假如文件中每行第一個元素是 FIND,如何獲取第二個元素

10) 如何調試 bash 腳本

將 -xv 參數加到 #!/bin/bash 後

例子:

11) 舉例如何寫一個函數 ?

12) 如何向連接兩個字元串 ?

輸出

HelloWorld

13) 如何進行兩個整數相加 ?

輸出

3

據 @kashu 的意見,本題的更佳回答為:

兩個整數相加,還有若干種方法實現:

14) 如何檢查文件系統中是否存在某個文件 ?

15) 寫出 shell 腳本中所有循環語法 ?

for 循環 :

while 循環 :

until 循環 :

16) 每個腳本開始的 #!/bin/sh 或 #!/bin/bash 表示什麼意思 ?

這一行說明要使用的 shell。#!/bin/bash 表示腳本使用 /bin/bash。對於 python 腳本,就是

17) 如何獲取文本文件的第 10 行 ?

18) bash 腳本文件的第一個符號是什麼

19) 命令:[ -z "" ] && echo 0 || echo 1 的輸出是什麼

20) 命令 「export」 有什麼用 ?

21) 如何在後台運行腳本 ?

在腳本後面添加 「&」。

據 @kashu 的意見,更好的答案是:

大部分時間我們可能是遠程使用Linux,我碰到過由於網路斷線使得在後台運行的command &沒了...

22) "chmod 500 script" 做什麼 ?

使腳本所有者擁有可執行許可權。

23) ">" 做什麼 ?

重定向輸出流到文件或另一個流。

24) & 和 && 有什麼區別

25) 什麼時候要在 [ condition ] 之前使用 「if」 ?

當條件滿足時需要運行多條命令的時候。

26) 命令: name=John && echo 'My name is $name' 的輸出是什麼

variable

27) bash shell 腳本中哪個符號用於注釋 ?

28) 命令: echo ${new:-variable} 的輸出是什麼

variable

29) ' 和 " 引號有什麼區別 ?

30) 如何在腳本文件中重定向標准輸出和標准錯誤流到 log.txt 文件 ?

在腳本文件中添加 "exec >log.txt 2>&1" 命令。

31) 如何只用 echo 命令獲取字元串變數的一部分 ?

例子:

32) 如果給定字元串 variable="User:123:321:/home/dir",如何只用 echo 命令獲取 home_dir ?

33) 如何從上面的字元串中獲取 「User」 ?

34) 如何使用 awk 列出 UID 小於 100 的用戶 ?

35) 寫程序為用戶計算主組數目並顯示次數和組名

36) 如何在 bash shell 中更改標準的域分隔符為 ":" ?

37) 如何獲取變數長度 ?

38) 如何列印變數的最後 5 個字元 ?

39) {variable: -10} 有什麼區別?

40) 如何只用 echo 命令替換字元串的一部分 ?

41) 哪個命令將命令替換為大寫 ?

42) 如何計算本地用戶數目 ?

43) 不用 wc 命令如何計算字元串中的單詞數目 ?

44) "export $variable" 或 "export variable" 哪個正確 ?

45) 如何列出第二個字母是 a 或 b 的文件 ?

46) 如何將整數 a 加到 b 並賦值給 c ?

47) 如何去除字元串中的所有空格 ?

48) 重寫這個命令,將輸出變數轉換為復數: item="car"; echo "I like $item" ?

49) 寫出輸出數字 0 到 100 中 3 的倍數(0 3 6 9 …)的命令 ?

50) 如何列印傳遞給腳本的所有參數 ?

51) [ b ] 和 [ b ] 有什麼區別

52) = 和 == 有什麼區別

53) 寫出測試 $a 是否大於 12 的命令 ?

[ $a -gt 12 ]

54) 寫出測試 $b 是否小於等於 12 的命令 ?

[ $b -le 12 ]

55) 如何檢查字元串是否以字母 "abc" 開頭 ?

[[ $string == abc* ]]

56) [[ string == "abc " ]] 有什麼區別*

57) 如何列出以 ab 或 xy 開頭的用戶名 ?

egrep " ab| xy" /etc/passwd|cut -d: -f1

58) bash 中 $! 表示什麼意思 ?

後台最近執行命令的 PID.

59) $? 表示什麼意思 ?

前台最近命令的結束狀態。

60) 如何輸出當前 shell 的 PID ?

echo $$

61) 如何獲取傳遞給腳本的參數數目 ?

echo $#

(LCTT 譯註:和第3題重復了。)

62) @ 有什麼區別

63) 如何在 bash 中定義數組 ?

64) 如何列印數組的第一個元素 ?

65) 如何列印數組的所有元素 ?

66) 如何輸出所有數組索引 ?

67) 如何移除數組中索引為 2 的元素 ?

68) 如何在數組中添加 id 為 333 的元素 ?

69) shell 腳本如何獲取輸入的值 ?

a) 通過參數

b) 通過 read 命令

70) 在腳本中如何使用 "expect" ?

熱點內容
海宇加密 發布:2024-11-25 07:24:03 瀏覽:801
手機通話降噪功能安卓在哪裡設置 發布:2024-11-25 07:21:03 瀏覽:117
c基礎java 發布:2024-11-25 07:20:50 瀏覽:70
罪惡都市安卓內置菜單在哪裡下載 發布:2024-11-25 07:09:51 瀏覽:706
資料庫附加資料庫 發布:2024-11-25 07:08:08 瀏覽:403
支付寶支付密碼如何修改 發布:2024-11-25 06:38:47 瀏覽:923
java開發要學習什麼技術 發布:2024-11-25 06:20:28 瀏覽:1000
java猿 發布:2024-11-25 06:18:36 瀏覽:127
如何刷安卓44 發布:2024-11-25 06:18:32 瀏覽:529
安卓手機怎麼限制app時間 發布:2024-11-25 06:14:15 瀏覽:403