Linux與命令列基礎
if [ -f "$f" ]; then
echo "found"
fi在 shell 腳本中,上面 if 的條件為真的情況是下列何者?
- A存在名稱為變數 f 之值的一般檔案時
- B存在名稱為變數 f 之值的檔案,且大小大於0時
- C存在名稱為變數 f 之值的檔案或目錄時
查看答案與解析
正確答案:A. 存在名稱為變數 f 之值的一般檔案時
[ ] 是 test 指令的另一種寫法,條件成立時傳回結束狀態0(真),if 依此分支。-f 檢查「存在該名稱的一般檔案」,若是目錄則為假。只檢查是否存在用 -e,檢查是否為目錄用 -d,檢查大小是否大於0用 -s。[ 的後面與 ] 的前面需要空白,把變數像 "$f" 這樣用雙引號括起來,即使名稱含有空白也能正確檢查。
- A. 正確。-f 在一般檔案存在時為真,即使是空檔案也為真。
- B. 連大小大於0都要檢查的是 -s。-f 對空檔案也為真。
- C. 不論是檔案還是目錄都檢查是否存在的是 -e。-f 對目錄為假。