Shell-Script
檢查是否存在多個目錄
我想檢查工作目錄中是否存在多個目錄,
dir1
例如dir2
和dir3
。我有以下
if [ -d "$PWD/dir1" ] && [ -d "$PWD/dir2" ] && [ -d "$PWD/dir3" ]; then echo True else echo False fi
但我懷疑有一種更優雅的方式來做到這一點。不要假設目錄名稱中存在模式。
目標是檢查一些目錄的存在和其他目錄的不存在。
我正在使用 Bash,但首選可移植程式碼。
如果您已經期望它們是目錄並且只是檢查它們是否都存在,則可以使用
ls
實用程序的退出程式碼來確定是否發生了一個或多個“錯誤”:ls "$PWD/dir1" "$PWD/dir2" "$PWD/dir3" >/dev/null 2>&1 && echo All there
我將輸出和 stderr 重定向到
/dev/null
以使其消失,因為我們只關心 的退出程式碼ls
,而不是它的輸出。任何被寫入的東西都會/dev/null
消失——它不會被寫入你的終端。
我會循環:
result=True for dir in \ "$PWD/dir1" \ "$PWD/dir2" \ "$PWD/dir3" do if ! [ -d "$dir" ]; then result=False break fi done echo "$result"
break
導致循環短路,就像你的鏈條一樣&&