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/