2016-12-26 46 views
-3

在bash腳本中,你能解釋一下,如果語句if[ -d "/"$file ]因此它會檢查它是一個目錄嗎?其中$file是存儲ls /在linux中使用條件測試的文件

+0

添加腳本你的問題。 – Cyrus

+1

'if'和'['之間的空格不是可選的。 – choroba

+0

理解這種事情的最好方法是閱讀[bash手冊](https://www.gnu.org/software/bash/manual/html_node/Bash-Conditional-Expressions.html) – kaylum

回答

0
if [ -d "/"$file ] 

一個變量被一個相同

test -d "/"$file 
if (exit $?) 

if $(test -d "/"$file) 

和測試-d FILE平均:FILE存在且是一個目錄(人測試)。

因爲裏面test.c的你:

case 'd':     /* File is a directory? */ 
    return (sh_stat (arg, &stat_buf) == 0 && (S_ISDIR (stat_buf.st_mode))); 


sh_stat  to have stat_buf of the FILE, if exist. 
S_ISDIR  mask on stat_buf to know if it is a directory. 

爲什麼if語句雙引號:

to concat string "A" and "B" you can write "A""B" 
to concat "/" and $file you can write "/"$file , "/"${file}, "/$file" or "/${file}" 
+0

你能解釋爲什麼用雙引號在if語句中? – chandu

+0

'test'也是內置的Bash,將會運行而不是'/ bin/test',所以在這種情況下,相關的源代碼將會是Bash本身。 –

+0

如果[-d $ file]與if [-d「/」$ file]相同? – chandu