Shell-Script

檢查是否存在多個目錄

  • March 2, 2019

我想檢查工作目錄中是否存在多個目錄,dir1例如dir2dir3

我有以下

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導致循環短路,就像你的鏈條一樣&&

引用自:https://unix.stackexchange.com/questions/503830