通常在爲bash shell編寫代碼時,需要測試一個文件(或目錄)是否存在(或不存在)並採取適當的操作。最常見的在這些測試都是......一次性測試多個文件條件(BASH)?
-e
- 文件存在,-f
- 文件是一個普通文件(不是目錄或者設備文件),-s
- 文件不是零大小,-d
- 文件是目錄,-r
- 文件讀取權限,-w
- 文件有寫,或-x
執行權限(用於運行測試的用戶)
這用戶可寫目錄 ....
#/bin/bash
if [ -f "/Library/Application Support" ]; then
echo 'YES SIR -f is fine'
else echo 'no -f for you'
fi
if [ -w "/Library/Application Support" ]; then
echo 'YES SIR -w is fine'
else echo 'no -w for you'
fi
if [ -d "/Library/Application Support" ]; then
echo 'YES SIR -d is fine'
else echo 'no -d for you'
fi
作爲證明這很容易證實
➝沒有-f你✓
➝YES SIR -w是罰款✓
➝YES SIR -d是罰款✓
我的問題,雖然看似明顯,而不太可能是不可能的 - 是如何簡單結合這些測試中,無需單獨執行它們每個條件。可惜......
if [ -wd "/Library/Application Support" ]
▶ -wd: unary operator expected
if [ -w | -d "/Library/Application Support" ]
▶ [: missing `]'
▶ -d: command not found
if [ -w [ -d "/Library.... ]] & if [ -w && -d "/Library.... ]
▶ [: missing `]'
➝沒有-wd你✖
➝no -w | -d爲您✖
➝沒有[-w [-d ..]你✖
➝沒有-w & & -d你✖
缺少什麼我在這裏?
根據[這些人](http://tldp.org/LDP/abs/html/fto.html)...「'-a'文件存在 - 這與-e效果相同。 「已棄用」,其使用是不鼓勵的。「不贊成使用這個腳註... ...根據1913年韋伯斯特詞典的版本: 棄用 ... 作爲一個邪惡祈禱,反對; 以避免祈禱; 欲刪除; 尋求釋放; 表示深表遺憾; 強烈反對 –
@亞歷克斯:這是別的東西,不用擔心,現在'-a 'means「和」。 –