面試你必須懂的bash之25問!
阿新 • • 發佈:2018-12-27
Bash shell 25問
一、Shell指令碼是什麼、它是必需的嗎?
一個Shell指令碼是一個文字檔案,包含一個或多個命令。作為系統管理員,我們經常需要使用多個命令來完成一項任務,我們可以新增這些所有命令在一個文字檔案(Shell指令碼)來完成這些日常工作任務。
二、什麼是預設登入shell,如何改變指定使用者的登入shell?
在Linux作業系統,“/bin/bash”是預設登入shell,是在建立使用者時分配的。使用chsh命令可以改變預設的shell。示例如下所示:
chsh <username> -s <shell>
三、可以在shell指令碼中使用哪些型別的變數?
可以定義如下兩種型別的變數
- 系統定義變數
- 使用者定義變數
四、如何將標準輸出和錯誤輸出同時重定向到同一位置?
可以有兩種實現方法:
2>&1
&>
五、shell指令碼中”if”語法如何巢狀?
示例如下:
if [ 條件 ] then;
command ...
else
if [ 條件 ] then;
command...
else
command...
fi
fi
六、shell指令碼中”$?”標記的用途是什麼?
“$?”可以來檢查前一命令的結束狀態,通常”0”表示成功,”1-255”表示執行失敗
七、在shell指令碼中如何比較兩個數字 ?
可以使用-gt
、-lt`` 、
-ne、
-eq`來進行比較。
八、shell指令碼中break命令的作用 ?
break命令一個簡單的用途是退出執行中的迴圈。我們可以在while和until迴圈中使用break命令跳出迴圈
九、shell指令碼中continue命令的作用 ?
continue命令不同於break命令,它只跳出當前迴圈的迭代,而不是整個迴圈。continue命令很多時候是很有用的,例如錯誤發生,但我們依然希望
十、如何執行一個指令碼?
通常賦予指令碼執行許可權或使用bash命令呼叫,如下所示:
-
chmod +x script.sh
-
bash script.sh
十一、指令碼的基本格式?
如下格式:
#!/bin/bash
#
#auther: magedu
#description:This is scripts
指令碼主體
十二、如何除錯shell指令碼?
通常使用bash 命令中 -x
引數來執行指令碼,如下格式:
-
bash -x script.sh
十三、shell指令碼如何比較字串?
如下格式:
#!/bin/bash
A="mageu"
B="magedu"
[[ "$A" == "$B" ]] && echo "字串相同" || echo "字串不同"
十四、bash中有哪些特殊變數?
$0
: 命令列中的指令碼名字$1..$9
: 指令碼可接受的引數個數$#
: 命令列引數的數量$*
: 所有命令引數,轉換為一個字串[email protected]
: 所有命令引數,轉換為一個字串
十五、指令碼中如何測試檔案?
-d
: 檔案是否存在且是目錄-e
: 檔案是否存在-f
: 檔案是否存在且是普通檔案-r
: 檔案存在且是否可讀-s
: 檔案存在且不為空-w
: 檔案存在且可寫-x
: 檔案存在且可執行
十六、指令碼中如何得到來自使用者終端的輸入值?
如下示例:
#!/bin/bash
#
#auther: mage team
#
read -p "Please Enter Your Chooice: " STR
echo "${STR}
十七、如何撤消變數或取消變數的值?
unset $VAR
VAR=
十八、bash中如何進行算術運算?
有如下三種方法:
let i++
expr 1 + 2
$[ 2 + 3]
$(($num1 + $num2))
十九、如何定義一個函式?
方法一:
func_name() {
func body
...
}
方法二:
function func_name(){
func body
...
}
二十、如何在shell指令碼中使用BC計算器?
VAR=$(echo "options;expression" | bc)
二十一、如何檢視所有的非列印字元?
如下操作步驟
- 使用vim工具開啟文字;
- 使用
ESC + :
,進入命令模式; - 輸入
set list
二十二、如何向指令碼傳遞一個訊號?
使用trap
命令來獲取,如下格式:
#!/bin/bash
# auther: mage team
trap 'echo "quit";exit1' INT
二十三、如何定義一個數組?
有如下方式:
declare -a NAME
: 申明一個索引陣列declare -A NAME
: 申明一個關聯陣列
二十四、如何計算一個數組的元素個數?
可以使用如下方式來引用:
${#ARRAY_NAME[*]}
${#ARRAY_NAME[@]}
可以在指令碼中計算
#!/bin/bash
# auther : mage team
#
file_list=(`ls /www/log/access_log/`)
NUM= $[ ${#file_list[*]} - 1 ]
echo "$NUM"
二十五、如何引用一個變數?
有如下兩種方式:
$VAR_NAME
${VAR_NAME}
文章出處:運維部落
文:馬哥Linux團隊