Linux與命令列基礎

$ name=world
$ echo 'Hello $name'
$ echo "Hello $name"

依序執行上面的指令時,兩個 echo 的輸出是下列何者?

  1. A第1個是 Hello world,第2個是 Hello $name
  2. B第1個和第2個都是 Hello world
  3. C第1個是 Hello $name,第2個是 Hello world
查看答案與解析

正確答案:C. 第1個是 Hello $name,第2個是 Hello world

在 shell 中,以單引號('…')括起來的部分會照原樣成為字串,$name 這類變數不會展開。雙引號("…")中的變數會展開,所以第2個成為 Hello world。雙引號也用來讓含有空白的變數值被當作一個引數處理。另外,在「name=world」這樣的指定中,= 的前後不能加空白。

  • A. 單引號與雙引號的作用顛倒了。會展開變數的是雙引號之中。
  • B. 單引號之中的變數不會展開。
  • C. 正確。單引號照原樣,雙引號會展開變數。
練習這個領域 前往領域頁面

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

  1. 如上所示,加上引數執行腳本 s.sh 時,輸出是下列何者?
  2. 在 shell 腳本中,上面 if 的條件為真的情況是下列何者?
  3. 上面的操作之後,目錄中的檔案是下列何者?
  4. 目前目錄中有附加執行權限的腳本 run.sh,輸入「run.sh」執行時出現「command not found」,輸入「./run.sh」則能執行。理由是下列何者?
  5. 依序執行上面的指令時,兩個 bash -c 的輸出組合是下列何者?