0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基礎(chǔ)被問到的24道shell腳本面試題精心匯總

馬哥Linux運維 ? 來源:未知 ? 2019-01-29 15:48 ? 次閱讀

雖然現(xiàn)在Python在運維工作中已經(jīng)使用很普遍,但是很多企業(yè)在找Linux云計算工程師的時候還是會問到shell 腳本的問題,它有助于你在工作環(huán)境中自動完成很多任務(wù)。

如下是一些面試過程中,經(jīng)常會遇到的 shell 腳本面試問題及解答:

Q:1 Shell腳本是什么、它是必需的嗎?

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

Q:2 什么是默認登錄shell,如何改變指定用戶的登錄shell

答:在Linux操作系統(tǒng),“/bin/bash”是默認登錄shell,是在創(chuàng)建用戶時分配的。使用chsh命令可以改變默認的shell。示例如下所示:

# chsh <用戶名> -s <新shell># chsh linuxtechi -s /bin/sh

Q:3 可以在shell腳本中使用哪些類型的變量?

答:在shell腳本,我們可以使用兩種類型的變量:

系統(tǒng)定義變量

用戶定義變量

系統(tǒng)變量是由系統(tǒng)系統(tǒng)自己創(chuàng)建的。這些變量通常由大寫字母組成,可以通過“set”命令查看。

用戶變量由系統(tǒng)用戶來生成和定義,變量的值可以通過命令“echo $<變量名>”查看。

Q:4 如何將標準輸出和錯誤輸出同時重定向到同一位置?

答:這里有兩個方法來實現(xiàn):

方法一:

2>&1 (如# ls /usr/share/doc > out.txt 2>&1 )

方法二:

&> (如# ls /usr/share/doc &> out.txt )

Q:5 shell腳本中“if”語法如何嵌套?

答:基礎(chǔ)語法如下:

if [ 條件 ]then命令1命令2…..elseif [ 條件 ]then命令1命令2….else命令1命令2…..fifi

Q:6 shell腳本中“$?”標記的用途是什么?

答:在寫一個shell腳本時,如果你想要檢查前一命令是否執(zhí)行成功,在if條件中使用“$?”可以來檢查前一命令的結(jié)束狀態(tài)。簡單的例子如下:

root@localhost:~# ls /usr/bin/shar/usr/bin/sharroot@localhost:~# echo $?0

如果結(jié)束狀態(tài)是0,說明前一個命令執(zhí)行成功。

root@localhost:~# ls /usr/bin/sharels: cannot access /usr/bin/share: No such file or directoryroot@localhost:~# echo $?2

如果結(jié)束狀態(tài)不是0,說明命令執(zhí)行失敗。

Q:7 在shell腳本中如何比較兩個數(shù)字 ?

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

#!/bin/bashx=10y=20if [ $x -gt $y ]thenecho “x is greater than y”elseecho “y is greater than x”fi

Q:8 shell腳本中break命令的作用 ?

答:break命令一個簡單的用途是退出執(zhí)行中的循環(huán)。我們可以在while和until循環(huán)中使用break命令跳出循環(huán)。

Q:9 shell腳本中continue命令的作用 ?

答:continue命令不同于break命令,它只跳出當(dāng)前循環(huán)的迭代,而不是整個循環(huán)。continue命令很多時候是很有用的,例如錯誤發(fā)生,但我們依然希望繼續(xù)執(zhí)行大循環(huán)的時候。

Q:10 告訴我shell腳本中Case語句的語法 ?

答:基礎(chǔ)語法如下:

case 變量 in值1)命令1命令2…..最后命令!!值2)命令1命令2……最后命令;;esac

Q:11 shell腳本中while循環(huán)語法 ?

答:如同for循環(huán),while循環(huán)只要條件成立就重復(fù)它的命令塊。不同于for循環(huán),while循環(huán)會不斷迭代,直到它的條件不為真。基礎(chǔ)語法:

while [ 條件 ]do命令…done

Q:12 如何使腳本可執(zhí)行 ?

答:使用chmod命令來使腳本可執(zhí)行。例子如下:

# chmod a+x myscript.sh

Q:13 “#!/bin/bash”的作用 ?

答:#!/bin/bash是shell腳本的第一行,稱為釋伴(shebang)行。這里#符號叫做hash,而! 叫做 bang。它的意思是命令通過 /bin/bash 來執(zhí)行。

Q:14 shell腳本中for循環(huán)語法 ?

答:for循環(huán)的基礎(chǔ)語法:

for 變量 in 循環(huán)列表do命令1命令2….最后命令done

Q:15 如何調(diào)試shell腳本 ?

答:使用'-x'參數(shù)(sh -x myscript.sh)可以調(diào)試shell腳本。另一個種方法是使用‘-nv’參數(shù)( sh -nv myscript.sh)。

Q:16 shell腳本如何比較字符串?

答:test命令可以用來比較字符串。測試命令會通過比較字符串中的每一個字符來比較。

Q:17 Bourne shell(bash) 中有哪些特殊的變量 ?

答:下面的表列出了Bourne shell為命令行設(shè)置的特殊變量。

內(nèi)建變量 解釋$0 命令行中的腳本名字$1 第一個命令行參數(shù)$2 第二個命令行參數(shù)….. …….$9 第九個命令行參數(shù)$# 命令行參數(shù)的數(shù)量$* 所有命令行參數(shù),以空格隔開

Q:18 在shell腳本中,如何測試文件 ?

答:test命令可以用來測試文件?;A(chǔ)用法如下表格:

Test 用法-d 文件名 如果文件存在并且是目錄,返回true-e 文件名 如果文件存在,返回true-f 文件名 如果文件存在并且是普通文件,返回true-r 文件名 如果文件存在并可讀,返回true-s 文件名 如果文件存在并且不為空,返回true-w 文件名 如果文件存在并可寫,返回true-x 文件名 如果文件存在并可執(zhí)行,返回true

Q:19 在shell腳本中,如何寫入注釋 ?

答:注釋可以用來描述一個腳本可以做什么和它是如何工作的。每一行注釋以#開頭。例子如下:

#!/bin/bash# This is a commandecho “I am logged in as $USER”

Q:20 如何讓 shell 就腳本得到來自終端的輸入?

答:read命令可以讀取來自終端(使用鍵盤)的數(shù)據(jù)。read命令得到用戶的輸入并置于你給出的變量中。例子如下:

# vi /tmp/test.sh#!/bin/bashecho ‘Please enter your name’read nameecho “My Name is $name”# ./test.shPlease enter your nameLinuxTechiMy Name is LinuxTechi

Q:21 如何取消變量或取消變量賦值 ?

答:“unset”命令用于取消變量或取消變量賦值。語法如下所示:

# unset <變量名>

Q:22 如何執(zhí)行算術(shù)運算 ?

答:有兩種方法來執(zhí)行算術(shù)運算:

1.使用expr命令

# expr 5 + 2

2.用一個美元符號和方括號($[ 表達式 ])例如:

test=$[16 + 4] ; test=$[16 + 4]

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

答:do-while語句類似于while語句,但檢查條件語句之前先執(zhí)行命令(LCTT 譯注:意即至少執(zhí)行一次。)。下面是用do-while語句的語法

do{命令} while (條件)

Q:24 在shell腳本如何定義函數(shù)呢 ?

答:函數(shù)是擁有名字的代碼塊。當(dāng)我們定義代碼塊,我們就可以在我們的腳本調(diào)用函數(shù)名字,該塊就會被執(zhí)行。示例如下所示:

$ diskusage () { df -h ; }譯注:下面是我給的shell函數(shù)語法,原文沒有[ function ] 函數(shù)名 [()]{命令;[return int;]}

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11123

    瀏覽量

    207921
  • python
    +關(guān)注

    關(guān)注

    53

    文章

    4753

    瀏覽量

    84081
  • Shell
    +關(guān)注

    關(guān)注

    1

    文章

    359

    瀏覽量

    23192

原文標題:精心匯總的 24 道 shell 腳本面試題

文章出處:【微信號:magedu-Linux,微信公眾號:馬哥Linux運維】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    常見的嵌入式C語言面試題

    數(shù)組是最基本的數(shù)據(jù)結(jié)構(gòu),關(guān)于數(shù)組的面試題也屢見不鮮,本文羅列了一些常見的面試題,僅供參考。目前有以下18題目。
    發(fā)表于 07-18 10:46 ?747次閱讀

    java基礎(chǔ)練習(xí)、面試題

    java基礎(chǔ)練習(xí)、面試題整理了java私塾教材的課后作業(yè),基礎(chǔ)部分,面試中也常常遇到的基礎(chǔ)問題,趕緊下載了。下載: [hide][/hide]
    發(fā)表于 07-16 14:02

    java經(jīng)典面試題深度解析

    免費視頻教程:java經(jīng)典面試題深度解析對于很多初學(xué)者來說,學(xué)好java在后期面試的階段都沒什么經(jīng)驗,為了讓大家更好的了解面試相關(guān)知識,今天在這里給大家分享了一個java經(jīng)典面試題深度
    發(fā)表于 06-20 15:16

    c語言面試題,c++面試題下載

    c語言面試題,c++面試題1. static有什么用途?(請至少說明兩種) 1) 限制變量的作用域 2) 設(shè)置變量的存儲域 2. 引用與指針有什么區(qū)別?  1) 引用必須
    發(fā)表于 10-22 11:19 ?5次下載

    c語言面試題

    c語言面試題集(單片機)C language problem(20151125084232)
    發(fā)表于 12-18 14:05 ?9次下載

    c語言面試題

    c語言面試題
    發(fā)表于 11-05 16:48 ?0次下載

    C語言經(jīng)典面試題

    面試題
    發(fā)表于 12-20 22:41 ?0次下載

    C語言經(jīng)典面試題

    C語言 經(jīng)典面試題
    發(fā)表于 01-05 11:27 ?0次下載

    經(jīng)典硬件面試題精選及解答

    經(jīng)典硬件面試題精選及解答
    發(fā)表于 11-29 18:02 ?0次下載

    程序員面試時經(jīng)常被問到哪些問題

    一年一度的畢業(yè)季,找工作季,跳槽旺季,衍生出來的狀態(tài)就是網(wǎng)絡(luò)上鋪天蓋地的面試題匯總、面試題標準解答等文章。
    的頭像 發(fā)表于 05-06 14:36 ?2175次閱讀

    Java的經(jīng)典面試題和答案詳細說明

    發(fā)現(xiàn)網(wǎng)上很多Java面試題都沒有答案,所以花了很長時間搜集整理出來了這套Java面試題大全,希望對大家有幫助哈~ 博主已將以下這些面試題整理成了一個Java面試手冊,題型非常全面附帶答
    發(fā)表于 09-07 08:00 ?0次下載
    Java的經(jīng)典<b class='flag-5'>面試題</b>和答案詳細說明

    常見的MySQL高頻面試題

    在各類技術(shù)崗位面試中,似乎 MySQL 相關(guān)問題經(jīng)常被問到。無論你面試開發(fā)崗位或運維崗位,總會問幾道數(shù)據(jù)庫問題。經(jīng)常有小伙伴私信我,詢問如何應(yīng)對 MySQL 面試題。其實很多
    的頭像 發(fā)表于 02-08 16:05 ?2284次閱讀

    操作系統(tǒng)的四十多道題面試題

    ? 我之前匯總了一下關(guān)于操作系統(tǒng)的面試題,最近又重新翻閱了一下發(fā)現(xiàn)不是很全,現(xiàn)在也到了面試季了,所以我又花了一周的時間修訂整理了一下這份面試題,這份
    的頭像 發(fā)表于 03-10 10:17 ?3104次閱讀
    操作系統(tǒng)的四十多道題<b class='flag-5'>面試題</b>

    142linux面試題,值得收藏

    142linux面試題,值得收藏
    發(fā)表于 06-16 14:42 ?4次下載

    關(guān)于數(shù)組常見的面試題

    數(shù)組是最基本的數(shù)據(jù)結(jié)構(gòu),關(guān)于數(shù)組的面試題也屢見不鮮,本文羅列了一些常見的面試題,僅供參考。目前有以下18題目。
    的頭像 發(fā)表于 08-17 09:25 ?1531次閱讀