面試時必須懂的shell知識

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

一個Shell腳本是一個文本文件,包含一個或多個命令。做爲系統管理員,咱們常常須要使用多個命令來完成一項任務,咱們能夠添加這些全部命令在一個文本文件(Shell腳本)來完成這些平常工做任務。shell

2、什麼是默認登陸shell,如何改變指定用戶的登陸shell?

在Linux操做系統,「/bin/bash」是默認登陸shell,是在建立用戶時分配的。使用chsh命令能夠改變默認的shell。示例以下所示:express

  • chsh <username> -s <shell>

3、能夠在shell腳本中使用哪些類型的變量?

能夠定義以下兩種類型的變量vim

  • 系統定義變量
  • 用戶定義變量

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

能夠有兩種實現方法:數組

  • 2>&1
  • &>

5、shell腳本中」if」語法如何嵌套?

示例以下:bash

if [ 條件 ] then;
    command ...
else 
    if [ 條件 ] then; 
        command...
    else 
        command...
    fi 
fi

6、shell腳本中"$?"標記的用途是什麼?

「$?」能夠來檢查前一命令的結束狀態,一般」0」表示成功,」1-255」表示運行失敗函數

7、在shell腳本中如何比較兩個數字 ?

可使用 、 -ne-eq`來進行比較。-gt-lt`` 、、

8、shell腳本中break命令的做用 ?

break命令一個簡單的用途是退出執行中的循環。咱們能夠在while和until循環中使用break命令跳出循環

9、shell腳本中continue命令的做用 ?

continue命令不一樣於break命令,它只跳出當前循環的迭代,而不是整個循環。continue命令不少時候是頗有用的,例如錯誤發生,但咱們依然但願

10、如何執行一個腳本?

一般賦予腳本執行權限或使用bash命令調用,以下所示:
  • chmod +x script.sh
  • bash script.sh

11、腳本的基本格式?

以下格式:

#!/bin/bash
#
#auther: magedu
#description:This is scripts
腳本主體

12、如何調試shell腳本?

一般使用bash 命令中 參數來執行腳本,以下格式:-x
  • bash -x script.sh

十3、shell腳本如何比較字符串?

以下格式:
#!/bin/bash
A="mageu"
B="magedu"

[[ "$A" == "$B" ]] && echo "字符串相同" || echo "字符串不一樣"

十4、bash中有哪些特殊變量?

  • $0 : 命令行中的腳本名字
  • $1..$9 : 腳本可接受的參數個數
  • $# : 命令行參數的數量
  • $* : 全部命令參數,轉換爲一個字符串
  • $@ :  全部命令參數,轉換爲一個字符串

十5、腳本中如何測試文件?

  • -d : 文件是否存在且是目錄
  • -e : 文件是否存在
  • -f : 文件是否存在且是普通文件
  • -r : 文件存在且是否可讀
  • -s : 文件存在且不爲空
  • -w : 文件存在且可寫
  • -x : 文件存在且可執行

十6、腳本中如何獲得來自用戶終端的輸入值?

以下示例:工具

#!/bin/bash
#
#auther: mage team
#
read -p "Please Enter Your Chooice: " STR
echo "${STR}

十7、如何撤消變量或取消變量的值?

  • unset $VAR
  • VAR=

十8、bash中如何進行算術運算?

有以下三種方法:測試

  • let i++
  • expr 1 + 2
  • $[ 2 + 3]
  • $(($num1 + $num2))

十9、如何定義一個函數?

方法一:ui

func_name() {
    func body
    ...
}

方法二:spa

function func_name(){
    func body
    ...
}

二10、如何在shell腳本中使用BC計算器?

  • VAR=$(echo "options;expression" | bc)

二11、如何查看全部的非打印字符?

以下操做步驟

  • 使用vim工具打開文本;
  • 使用ESC + : ,進入命令模式;
  • 輸入set list

二12、如何向腳本傳遞一個信號?

使用命令來獲取,以下格式:trap
#!/bin/bash
# auther: mage team
trap 'echo "quit";exit1' INT

二十3、如何定義一個數組?

有以下方式:
  • declare -a NAME : 申明一個索引數組
  • declare -A NAME : 申明一個關聯數組

二十4、如何計算一個數組的元素個數?

可使用以下方式來引用:
  • ${#ARRAY_NAME[*]}
  • ${#ARRAY_NAME[@]}
能夠在腳本中計算
#!/bin/bash
# auther : mage team
#
file_list=(`ls /www/log/access_log/`)
NUM= $[ ${#file_list[*]} - 1 ]
echo "$NUM"

二十5、如何引用一個變量?

有以下兩種方式:
  • $VAR_NAME
  • ${VAR_NAME}
相關文章
相關標籤/搜索