《Linux程式設計基礎》第四章習題

ShadowBurn發表於2019-02-23

一、填空題

  1. Linux 系統中的輸入輸出分為三類,分別為:(標準輸入)、標準輸出和(標準錯誤)。
  2. 當執行 gcc -c hello.c 2>file 命令時,系統會將執行命令時的(錯誤)輸出到檔案 file 中。
  3. 執行 Shell 指令碼的方法有兩種,假設現有一個指令碼檔案 test.sh,則執行該指令碼的方式分別為:(chmod +x test.sh ./test.sh)和(sh test.sh)。
  4. Shell 中的變數沒有明確的型別,變數值都以字串的形式儲存,但 Shell 中也可能進行一些算術運算,Shell 中的運算一般通過兩個命令實現:(let)和(expr)。
  5. 條件判斷是條件語句的核心,Shell 中通常使用(test)命令或([)命令對條件進行判斷,這兩個命令判斷的條件可以是命令或指令碼。
  6. Shell 指令碼中常用的條件語句有三種,分別為:(if)語句、(select)語句和(case)語句。

二、判斷題

  1. cat<file 命令的功能是將 cat 命令列印的結果重定向到檔案 file 中。(×)
  2. Shell 的原意為“殼”,它包裹在核心之外,處於硬體與核心之間。其主要功能為接收使用者輸入的命令,找到命令所在位置,並加以執行。(×)
  3. Shell 最重要的功能是命令解釋,Linux 系統中的所有可執行檔案都可以作為 Shell 命令來執行。(√)
  4. 使用 & 連線符連線的命令,其前後命令的執行遵循邏輯與關係,只有該連線符之前的命令執行成功時,後面的命令才會被執行。(√)
  5. 在 Shell 程式設計中,使用 echo 命令可列印字串。若當前指令碼中定義了變數 var=“hello itheima”,則語句 echo ‘$var’ 列印的結果為 hello itheima。(×)

三、單選題

  1. 分析以下指令碼程式碼:

    #!/bin/sh
    var="hello itheima"
    echo "$var"
    echo '$var'
    exit 0
    

    從以下選項中選出正確的執行結果。(B)

    A.

    hello itheima
    hello itheima
    

    B.

    hello itheima
    $var
    

    C.

    $var
    hello itheima
    

    D.

    $var
    $var
    
  2. 從以下四個選項中,選出能成功將標準錯誤重定向到 file 檔案中的選項。(C)

    A. gcc hello.c 2<file

    B. gcc hello.c 1<file

    C. gcc hello.c 2>file

    D. gcc hello.c 2>>file

  3. 若需要在當前終端上順序執行命令,則應使用下列哪個符號連線?(A)

    A. ;

    B. |

    C. &&

    D. ||

四、簡答題

  1. 分析以下指令碼程式碼:

    #!/bin/bash
    sum=1
    for((i=1; i<=10; i++))
    do
        sum='expr $sum + $i'
        echo $sum
    done
    echo "sum1~10=$sum"
    

    寫出此指令碼的執行效果。

    2
    4
    7
    11
    16
    22
    29
    37
    46
    56
    sum1~10=56
    
  2. 寫出 Shell 指令碼中 while 迴圈與 until 迴圈的基本格式,並簡述這兩種迴圈結構的區別。

    # while迴圈
    while [ 表示式 ]
    do
      ...
    done
    
    # until迴圈
    until [ 表示式 ]
    do
      ...
    done
    

    當 while 迴圈的條件為真時執行迴圈中的命令;當 until 迴圈中的條件為假時執行迴圈中的命令。

五、程式設計題

  1. 編寫 Shell 指令碼實現如下選單介面:

    Menu
    1) exit
    2) edit file
    3) date
    4} calc
    #?
    
    #!/bin/sh
    echo "Menu"
    select _command in "exit" "edit file" "date" "calc"
    do
      echo "$_command"
      break
    done
    exit 0
    
  2. 編寫 Shell 指令碼,實現批量新增使用者功能,要求如下:

    ① 使用者名稱格式統一,為相同字串加數字編號,如 qwe1~qwe9;

    ② 使用者密碼與使用者名稱相同。

    #!/bin/sh
    for((i=1; i<=9; i++))
    do
      name=qwe$i
      sudo useradd $name
      echo $name | sudo passwd --stdin $name
    done
    exit 0
    
  3. 編寫 Shell 指令碼,實現批量刪除使用者功能,其中使用者的使用者名稱格式統一(如 qwe1~qwe9)。

    #!/bin/sh
    for((i=1; i<=9; i++))
    do
      sudo userdel qwe$i
    done
    exit 0
    

相關文章