Linuxshelll腳本面試25問

Q1: Shell腳本是什麼、它是必需的嗎?

答:一個Shell腳本是一個文本文件,包含一個或多個命令。作爲系統管理員,我們經常需要使用多個命令來完成一項任務,我們可以添加這些所有命令在一個文本文件(Shell腳本)來完成這些日常工作任務。


Q2: 什麼是默認登錄shell,如何改變指定用戶的登錄shell?

答:在linux操作系統,“/bin/bash”是默認登錄shell,是在創建用戶時分配的。使用chsh命令可以改變默認的shell。

語法:    chsh  <default_shell>  -s   <new_default_shell>

示例:


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 {    Condition   }

then

command1

command2

……

if {    Condition   }

then

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 + 2
7

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

[root@localhost tmp]# echo $test
7


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

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

do

{

statements

}while   (condition)


原文鏈接: http://blog.jobbole.com/86237/


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