Linux與命令列基礎

if [ -f "$f" ]; then
  echo "found"
fi

在 shell 腳本中,上面 if 的條件為真的情況是下列何者?

  1. A存在名稱為變數 f 之值的一般檔案時
  2. B存在名稱為變數 f 之值的檔案,且大小大於0時
  3. C存在名稱為變數 f 之值的檔案或目錄時
查看答案與解析

正確答案:A. 存在名稱為變數 f 之值的一般檔案時

[ ] 是 test 指令的另一種寫法,條件成立時傳回結束狀態0(真),if 依此分支。-f 檢查「存在該名稱的一般檔案」,若是目錄則為假。只檢查是否存在用 -e,檢查是否為目錄用 -d,檢查大小是否大於0用 -s。[ 的後面與 ] 的前面需要空白,把變數像 "$f" 這樣用雙引號括起來,即使名稱含有空白也能正確檢查。

  • A. 正確。-f 在一般檔案存在時為真,即使是空檔案也為真。
  • B. 連大小大於0都要檢查的是 -s。-f 對空檔案也為真。
  • C. 不論是檔案還是目錄都檢查是否存在的是 -e。-f 對目錄為假。
練習這個領域 前往領域頁面

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

  1. 上面的操作之後,目錄中的檔案是下列何者?
  2. 目前目錄中有附加執行權限的腳本 run.sh,輸入「run.sh」執行時出現「command not found」,輸入「./run.sh」則能執行。理由是下列何者?
  3. 依序執行上面的指令時,兩個 bash -c 的輸出組合是下列何者?
  4. Linux 的套件管理系統(Debian 系的 apt、Red Hat 系的 dnf 等)的主要功能是下列何者?
  5. 在使用 systemd 的 Linux 上,對服務 license.service 執行「systemctl start license.service」與「systemctl enable license.service」的差異是下列何者?