好程式設計師Linux雲端計算教程分享Shell指令碼面試題
好程式設計師Linux 雲端計算教程分享Shell 指令碼面試題, 雖然現在Python 在運維工作中已經使用很普遍,但是很多企業在找 Linux 雲端計算工程師的時候還是會問到 shell 指令碼的問題,它有助於你在工作環境中自動完成很多工。今天為 Linux 雲端計算工程師準備了一些 shell 指令碼面試題一起看看吧。
Q:1Shell 指令碼是什麼、它是必需的嗎 ?
答: 一個 Shell 指令碼是一個文字檔案,包含一個或多個命令。作為系統管理員,我們經常需要使用多個命令來完成一項任務,我們可以新增這些所有命令在一個文字檔案 (Shell 指令碼 ) 來完成這些日常工作任務。
Q:2 什麼是預設登入 shell ,如何改變指定使用者的登入 shell
答: 在 Linux 作業系統,“ /bin/bash ”是預設登入 shell ,是在建立使用者時分配的。使用 chsh 命令可以改變預設的 shell 。示例如下所示 :
#chsh< 使用者名稱 >-s< 新 shell>
#chshlinuxtechi-s/bin/sh
Q:3 可以在 shell 指令碼中使用哪些型別的變數 ?
答:在shell 指令碼,我們可以使用兩種型別的變數:
·系統定義變數
·使用者定義變數
系統變數是由系統系統自己建立的。這些變數通常由大寫字母組成,可以透過“ set ”命令檢視。
使用者變數由系統使用者來生成和定義,變數的值可以透過命令“ echo$< 變數名 > ”檢視。
Q:4 如何將標準輸出和錯誤輸出同時重定向到同一位置 ?
答:這裡有兩個方法來實現:
方法一:
2>&1( 如 #ls/usr/share/doc>out.txt2>&1)
方法二:
&>( 如 #ls/usr/share/doc&>out.txt)
Q:5shell 指令碼中“ if ”語法如何巢狀 ?
答:基礎語法如下:
if[ 條件 ]
then
命令1
命令2
… ..
else
if[ 條件 ]
then
命令1
命令2
… .
else
命令1
命令2
… ..
fi
fi
Q:6shell 指令碼中“ $? ”標記的用途是什麼?
答:在寫一個shell 指令碼時,如果你想要檢查前一命令是否執行成功,在 if 條件中使用“ $? ”可以來檢查前一命令的結束狀態。簡單的例子如下:
root@localhost:~#ls/usr/bin/shar
/usr/bin/shar
root@localhost:~#echo$?
0
如果結束狀態是0 ,說明前一個命令執行成功。
root@localhost:~#ls/usr/bin/share
ls:cannotaccess/usr/bin/share:Nosuchfileordirectory
root@localhost:~#echo$?
2
如果結束狀態不是0 ,說明命令執行失敗。
Q:7 在 shell 指令碼中如何比較兩個數字 ?
答:在if-then 中使用測試命令( -gt 等)來比較兩個數字,例子如下:
#!/bin/bash
x=10
y=20
if[$x-gt$y]
then
echo “ xisgreaterthany ”
else
echo “ yisgreaterthanx ”
fi
Q:8shell 指令碼中 break 命令的作用 ?
答:break 命令一個簡單的用途是退出執行中的迴圈。我們可以在 while 和 until 迴圈中使用 break 命令跳出迴圈。
Q:9shell 指令碼中 continue 命令的作用 ?
答:continue 命令不同於 break 命令,它只跳出當前迴圈的迭代,而不是整個迴圈。 continue 命令很多時候是很有用的,例如錯誤發生,但我們依然希望繼續執行大迴圈的時候。
Q:10 告訴我 shell 指令碼中 Case 語句的語法 ?
答:基礎語法如下:
case 變數 in
值1)
命令1
命令2
… ..
最後命令
!!
值2)
命令1
命令2
……
最後命令
;;
esac
Q:11shell 指令碼中 while 迴圈語法 ?
答:如同for 迴圈, while 迴圈只要條件成立就重複它的命令塊。不同於 for 迴圈, while 迴圈會不斷迭代,直到它的條件不為真。基礎語法:
while[ 條件 ]
do
命令…
done
Q:12 如何使指令碼可執行 ?
答:使用chmod 命令來使指令碼可執行。例子如下:
#chmoda+xmyscript.sh
Q:13 “ #!/bin/bash ”的作用 ?
答:#!/bin/bash 是 shell 指令碼的第一行,稱為釋伴( shebang )行。這裡 # 符號叫做 hash ,而 ! 叫做 bang 。它的意思是命令透過 /bin/bash 來執行。
Q:14shell 指令碼中 for 迴圈語法 ?
答:for 迴圈的基礎語法:
for 變數 in 迴圈列表
do
命令1
命令2
… .
最後命令
done
Q:15 如何除錯 shell 指令碼 ?
答:使用'-x' 引數( sh-xmyscript.sh )可以除錯 shell 指令碼。另一個種方法是使用‘ -nv ’引數 (sh-nvmyscript.sh) 。
Q:16shell 指令碼如何比較字串 ?
答:test 命令可以用來比較字串。測試命令會透過比較字串中的每一個字元來比較。
Q:17Bourneshell(bash) 中有哪些特殊的變數 ?
答:下面的表列出了Bourneshell 為命令列設定的特殊變數。
內建變數解釋
$0 命令列中的指令碼名字
$1 第一個命令列引數
$2 第二個命令列引數
$9 第九個命令列引數
$# 命令列引數的數量
$* 所有命令列引數,以空格隔開
Q:18 在 shell 指令碼中,如何測試檔案 ?
答:test 命令可以用來測試檔案。基礎用法如下表格:
Test 用法
-d 檔名如果檔案存在並且是目錄,返回 true
-e 檔名如果檔案存在,返回 true
-f 檔名如果檔案存在並且是普通檔案,返回 true
-r 檔名如果檔案存在並可讀,返回 true
-s 檔名如果檔案存在並且不為空,返回 true
-w 檔名如果檔案存在並可寫,返回 true
-x 檔名如果檔案存在並可執行,返回 true
Q:19 在 shell 指令碼中,如何寫入註釋 ?
答:註釋可以用來描述一個指令碼可以做什麼和它是如何工作的。每一行註釋以# 開頭。例子如下:
#!/bin/bash
#Thisisacommand
echo “ Iamloggedinas$USER ”
Q:20 如何讓 shell 就指令碼得到來自終端的輸入 ?
答:read 命令可以讀取來自終端(使用鍵盤)的資料。 read 命令得到使用者的輸入並置於你給出的變數中。例子如下:
#vi/tmp/test.sh
#!/bin/bash
echo ‘ Pleaseenteryourname ’
readname
echo “ MyNameis$name ”
#./test.sh
Pleaseenteryourname
LinuxTechi
MyNameisLinuxTechi
Q:21 如何取消變數或取消變數賦值 ?
答:“ unset ”命令用於取消變數或取消變數賦值。語法如下所示:
#unset< 變數名 >
Q:22 如何執行算術運算 ?
答:有兩種方法來執行算術運算:
1. 使用 expr 命令
#expr5+2
2. 用一個美元符號和方括號( $[ 表示式 ] )例如:
test=$[16+4];test=$[16+4]
Q:23do-while 語句的基本格式 ?
答:do-while 語句類似於 while 語句,但檢查條件語句之前先執行命令( LCTT 譯註:意即至少執行一次。)。下面是用 do-while 語句的語法
do
{
命令
}while( 條件 )
Q:24 在 shell 指令碼如何定義函式呢 ?
答:函式是擁有名字的程式碼塊。當我們定義程式碼塊,我們就可以在我們的指令碼呼叫函式名字,該塊就會被執行。示例如下所示:
$diskusage(){df-h;}
譯註:下面是我給的shell 函式語法,原文沒有
[function] 函式名 [()]
{
命令;
[returnint;]
}
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69913892/viewspace-2663774/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 好程式設計師雲端計算教程分享Linux雲端計算面試常見問題一程式設計師Linux面試
- 好程式設計師雲端計算教程分享Linux雲端計算面試常見問題二程式設計師Linux面試
- 好程式設計師雲端計算教程分享Linux雲端計算面試常見問題三程式設計師Linux面試
- 好程式設計師雲端計算教程分享Shell程式設計之for迴圈結構程式設計師
- 好程式設計師雲端計算培訓分享Linux Shell常見命令總結大全程式設計師Linux
- 好程式設計師雲端計算教程分享入門雲端計算要精通學習什麼?程式設計師
- 今天好程式設計師雲端計算教程分享雲端計算是什麼,和Linux什麼關係程式設計師Linux
- 好程式設計師web前端教程分享JavaScript面試題程式設計師Web前端JavaScript面試題
- 好程式設計師雲端計算教程分享Mysql技術知識點程式設計師MySql
- 好程式設計師雲端計算教程分享if巢狀功能語法解析程式設計師巢狀
- 雲端計算面試題及答案,常見的Shell指令碼面試題面試題指令碼
- 好程式設計師雲端計算教程分享雲服務和雲端計算的區別有那些程式設計師
- 好程式設計師Java教程分享XML常見面試題程式設計師JavaXML面試題
- 好程式設計師雲端計算培訓分享雲端計算中SOA是什麼?程式設計師
- VUE的面試題分享-好程式設計師Vue面試題程式設計師
- 好程式設計師Java教程分享Java面試妙招程式設計師Java面試
- 好程式設計師雲端計算培訓分享雲端計算中微服務是什麼?程式設計師微服務
- 好程式設計師雲端計算培訓分享雲端計算必會的Docker容器命令程式設計師Docker
- 好程式設計師web前端教程分享Vue.js面試題程式設計師Web前端Vue.js面試題
- 好程式設計師Java教程分享jsp相關面試題程式設計師JavaJS面試題
- 好程式設計師web前端教程分享Jquery常見面試題程式設計師Web前端jQuery面試題
- 好程式設計師Java教程分享JavaScript常見面試題五程式設計師JavaScript面試題
- 好程式設計師Java教程分享JavaScript常見面試題四程式設計師JavaScript面試題
- 好程式設計師Java教程分享JavaScript常見面試題三程式設計師JavaScript面試題
- 好程式設計師Java教程分享JavaScript常見面試題二程式設計師JavaScript面試題
- 好程式設計師Java教程分享JavaScript常見面試題一程式設計師JavaScript面試題
- 好程式設計師Java教程分享Java面試題之Hibernate程式設計師Java面試題
- 好程式設計師Java教程分享:Java工程師常見面試題程式設計師Java工程師面試題
- 好程式設計師雲端計算培訓分享msyql高階操作程式設計師
- 好程式設計師分享新手學習雲端計算的規劃程式設計師
- 好程式設計師雲端計算學習路線分享雲端計算之檔案查詢程式設計師
- 好程式設計師Java教程分享Java實習生面試題集錦程式設計師Java面試題
- 好程式設計師Java教程分享經典Java main方法面試題程式設計師JavaAI面試題
- 雲端計算學習路線教程程式碼筆記:Shell程式設計筆記程式設計
- 好程式設計師雲端計算學習路線分享檢視程式process程式設計師
- 好程式設計師雲端計算學習路線分享:關於NFS程式設計師NFS
- 好程式設計師分享:Java面試題常見問題程式設計師Java面試題
- 好程式設計師雲端計算培訓分享學了雲端計算將來就業怎麼樣?程式設計師就業