Linux與命令列基礎

$ cat s.sh
#!/bin/bash
echo "$# $1"
$ ./s.sh a "b c" d

如上所示,加上引數執行腳本 s.sh 時,輸出是下列何者?

  1. A3 ./s.sh
  2. B3 a
  3. C4 a
查看答案與解析

正確答案:B. 3 a

在腳本中,$1、$2… 表示第1個、第2個引數,$# 表示引數的個數,$0 表示腳本本身的名稱。"b c" 用雙引號括起來,所以成為含有空白的一個引數,引數是 a、b c、d 共3個。因此 $# 為3,$1 為 a,輸出為 3 a。要把所有引數保持原本的分隔傳給其他指令時,寫作 "$@"。

  • A. 腳本的名稱是 $0,$1 是第1個引數 a。
  • B. 正確。引數是 a、b c、d 共3個,第1個是 a。
  • C. 用引號括起來的 "b c" 是一個引數,所以引數個數不是4而是3。
練習這個領域 前往領域頁面

Linux與命令列基礎的其他題目

  1. 在 shell 腳本中,上面 if 的條件為真的情況是下列何者?
  2. 上面的操作之後,目錄中的檔案是下列何者?
  3. 目前目錄中有附加執行權限的腳本 run.sh,輸入「run.sh」執行時出現「command not found」,輸入「./run.sh」則能執行。理由是下列何者?
  4. 依序執行上面的指令時,兩個 bash -c 的輸出組合是下列何者?
  5. Linux 的套件管理系統(Debian 系的 apt、Red Hat 系的 dnf 等)的主要功能是下列何者?