Linuxshelll指令碼面試25問

2021-07-15 08:58:59 字數 4263 閱讀 7016

q1: shell指令碼是什麼、它是必需的嗎?

答:乙個shell指令碼是乙個文字檔案,包含乙個或多個命令。作為系統管理員,我們經常需要使用多個命令來完成一項任務,我們可以新增這些所有命令在乙個文字檔案(shell指令碼)來完成這些日常工作任務。

q2: 什麼是預設登入shell,如何改變指定使用者的登入shell?

答:在linux作業系統,「/bin/bash」是預設登入shell,是在建立使用者時分配的。使用chsh命令可以改變預設的shell。

語法:    chsh  -s  

示例:

q3: 可以在shell指令碼中使用哪些型別的變數?

答:在shell指令碼,我們可以使用兩種型別的變數:

系統變數

使用者定義變數

系統變數是由系統自己建立的。這些變數通常由大寫字母組成,可以通過「set」命令檢視。

使用者變數由系統使用者來生成和定義,變數的值可以通過命令「echo  $《變數名》」檢視

[root@localhost ~]# set she="shedong"

[root@localhost ~]# echo $she

[root@localhost ~]# export she="shedong"

[root@localhost ~]# echo $she

shedong

export乙個環境變數,光宣告了不能用,必須export一下

q4: 如何將標準輸出和錯誤輸出同時重定向到同乙個位置?

答:  這裡有兩個方法可以實現

方法一:

[root@localhost doc]# ls /usr/share/doc/ > out.txt 2>&1

方法二:

[root@localhost ~]# ls /usr/share/doc/ &> out.txt

q5:shell指令碼中「if」語法如何巢狀?

答:基礎語法如下:

if then

command1

command2 ……

ifthen

command1

command2 ……

else

command1

command2 ……

fi fi

q6:shell指令碼中的「$?」標記的用途是什麼?

答:在寫乙個shell指令碼時,如果你想要檢查前乙個命令是否執行成功,在if條件中使用「$?」可以檢查前一命令的結束狀態。

示例如下:

[root@localhost ~]# ls /mnt

she[root@localhost ~]# echo $?

0[root@localhost ~]# ls /usr/bin/share

ls: /usr/bin/share: no such file or directory

[root@localhost ~]# echo $?2

如果結束狀態是0,說明前乙個命令執行成功

如果結束狀態不是0,說明命令執行是失敗的。

q7:在shell指令碼中如何比較兩個數字?

答:在if-then中使用測試命令(-gt等)來比較兩個數字,例子如下:

[root@localhost ~]# cat compare.sh 

#!/bin/bash

x=10

y=20

if [ $x -gt $y ]

then

echo "x is greater than y"

else

echo "y is greater than x"

fi[root@localhost ~]# sh compare.sh 

y is greater than x

q8:shell指令碼中break命令的作用?

答:break命令乙個簡單的用途是推執行中的迴圈。我們可以在while和until迴圈中使用break命令來挑出迴圈。

q9:shell指令碼中continue命令的作用?

答:continue命令不同於break命令 ,它只跳出當前迴圈的迭代,而不是整個迴圈。continue命令很多時候是很有用的,例如錯誤發生,但我們依然希望繼續執行大迴圈的時候。

q10:告訴我shell指令碼中case語句的語法?

答:基礎語法如下:

case   word  in

value1

command1

command2 ……

last_command !!

value2

command1

command2 ……

last_command ;;

esac

q11:shell指令碼中while迴圈語法?

答:如同for迴圈,while迴圈只要條件成立就重複它的命令塊。不同於for迴圈,while迴圈會不斷迭代,直到它的條件不為真。

基礎語法:

while   [test-condition ] do

commands……

done

q12:如何使指令碼可執行?

答:使用chmod命令來使指令碼可執行。例如

[root@localhost ~]# chmod a+x compare.sh 

q13:「#!/bin/bash」的作用?

答:#!/bin/bash是shell指令碼的第一行,成為釋伴(shebang)行。這裡#符號叫做hash,而!叫做bang。它的意思是命令通過/bin/bash來執行。

這一行總體的意思是表明你使用哪款shell來解釋以下你寫的**。

q14:shell指令碼中for迴圈語法?

答:for迴圈的基礎語法:

for  variables  in  list_of_items do

command1

command2 ……

last_command

done

q15:如何除錯shell指令碼?

答:使用『-x』引數(sh  -x  compare.sh)可以除錯shell指令碼。另一種方法是使用『-nv』引數 (sh  -nv  compare.sh)。

q16:在shell指令碼中,如何寫入注釋?

答:注釋可以用來描述乙個指令碼可以做什麼和它是如何工作的。每一行注釋以#開頭。例子如下:

[root@localhost ~]# cat compare.sh 

#!/bin/bash

#this is a sample!

x=10

y=20

if [ $x -gt $y ]

then

echo "x is greater than y"

else

echo "y is greater than x"fi

q17:如何讓shell指令碼得到來自終端的輸入?

答:read命令可以讀取來自終端(使用鍵盤)的資料。read命令得到使用者的輸入並置於你給出的變數中。例子如下:

[root@localhost tmp]# cat test.sh 

#!/bin/bash

echo 'please enter your name'

read name

echo "my name is $name"

[root@localhost tmp]# sh test.sh 

please enter your name

xiaoming

my name is xiaoming

q18:如何取消變數或取消變數賦值?

答:unset 命令用於取消變數或取消變數賦值。語法如下所示:

[root@localhost tmp]# echo $she

shedong

[root@localhost tmp]# unset she

[root@localhost tmp]# echo $she

q19:如何執行算數運算?

答:有兩種方法來執行算數運算:

1.使用expr命令(#    expr 5 + 2)

2.用乙個美元符號和方括號 $[ 5+2 ]

[root@localhost tmp]# expr 5 + 27

[root@localhost tmp]# test=$[5 + 2]

[root@localhost tmp]# echo $test7

q20:do-while語句的基本格式?

答:do-while語句類似於while語句,但檢查條件語句之前先執行命令(即至少執行一次)。下面是do-while語句的語法 do

while   (condition)

面試常用指令碼

1 使用shell,建立class1 使用者組,再批量建立stu1 stu30 的使用者,並指定使用者組為 class1。vi autoaddusr usr bin php q exec groupadd class1 for i 1 i 30 i chmod x autoaddusr autoad...

Linux Shell指令碼面試25問

答 乙個shell指令碼是乙個文字檔案,包含乙個或多個命令。作為系統管理員,我們經常需要使用多個命令來完成一項任務,我們可以新增這些所有命令在乙個文字檔案 shell指令碼 來完成這些日常工作任務。答 在linux作業系統,bin bash 是預設登入shell,是在建立使用者時分配的。使用chsh...

Shell 指令碼面試問題大全

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