一、基礎判斷文件是否存在的方法
在shell腳本中,判斷文件或文件夾是否存在是一個基本的操作,使用test或者[ ]可以實現。舉個例子:
if [ -e "/path/to/file" ]; then
echo "文件存在"
else
echo "文件不存在"
fi
上面的代碼中,使用-e選項判斷文件是否存在,如果文件存在,則返回真,執行if語句中的命令。如果文件不存在,則返回假,執行else語句中的命令。
除了-e以外,還有一些常用的選項:
- -f:判斷是否為普通文件
- -d:判斷是否為目錄
- -s:判斷文件是否為空
- -r:判斷文件是否可讀
- -w:判斷文件是否可寫
- -x:判斷文件是否可執行
使用以上選項可以根據需要進行文件屬性的判斷。比如:
if [ -d "/path/to/dir" ]; then
echo "目錄存在"
else
echo "目錄不存在"
fi
使用-d選項判斷路徑是否為目錄。
二、判斷多個文件或者目錄是否存在
有時候需要同時判斷多個文件或者目錄是否存在,可以使用for循環,例如:
dir_list="/path/to/dir1 /path/to/dir2"
for dir in $dir_list; do
if [ -d "$dir" ]; then
echo "$dir exists"
else
echo "$dir does not exist"
fi
done
上面的代碼中,我們使用空格分割了多個目錄,然後使用for循環逐一判斷。當目錄存在時,輸出「$dir exists」,否則輸出「$dir does not exist」。
三、使用函數封裝判斷文件是否存在的操作
如果需要多次判斷文件是否存在,可以將判斷封裝成函數,便於復用。
file_exists() {
if [ -e "$1" ]; then
return 0
else
return 1
fi
}
# 調用函數
if file_exists "/path/to/file"; then
echo "文件存在"
else
echo "文件不存在"
fi
上面的代碼中,我們定義了一個名為file_exists的函數來封裝判斷文件是否存在的操作,在調用函數時,傳入需要判斷的文件路徑作為參數。
四、結合條件語句進行文件是否存在的多重判斷
有時候需要根據文件是否存在來執行不同的操作,可以結合條件語句來實現。
if [ -e "/path/to/file" ]; then
# 文件存在,執行操作1
echo "文件存在"
...
elif [ -e "/path/to/another/file" ]; then
# 文件不存在,但是另一個文件存在,執行操作2
echo "另一個文件存在"
...
else
# 文件不存在,且另一個文件也不存在,執行操作3
echo "兩個文件都不存在"
...
fi
上面的代碼中,我們在if語句中先判斷第一個文件是否存在,如果存在,則執行操作1;如果不存在,則判斷第二個文件是否存在,如果第二個文件存在,則執行操作2;如果兩個文件都不存在,則執行操作3。
五、判斷文件是否存在並且具有讀寫許可權
有時候需要判斷文件是否存在並且具有讀寫許可權,可以結合使用-e和-w選項。
if [ -e "/path/to/file" ] && [ -w "/path/to/file" ] && [ -r "/path/to/file" ]; then
# 文件存在,且可讀可寫,執行操作1
echo "文件存在,且可讀可寫"
else
# 文件不存在,或者沒有讀寫許可權,執行操作2
echo "文件不存在,或者沒有讀寫許可權"
fi
上面的代碼中,我們使用-e、-r和-w選項來同時判斷文件是否存在且具有讀寫許可權,如果滿足條件,則執行操作1,否則執行操作2。
六、判斷文件是否存在並且修改時間在指定時間之前
有時候需要判斷文件是否存在並且修改時間在指定時間之前,可以使用find命令配合-exec選項來實現。
if find /path/to/file -mmin +60 -print -quit | grep -q .; then
# 文件存在,且修改時間在60分鐘之前,執行操作1
echo "文件存在,且修改時間在60分鐘之前"
else
# 文件不存在,或者修改時間不在60分鐘之前,執行操作2
echo "文件不存在,或者修改時間不在60分鐘之前"
fi
上面的代碼中,我們使用了find命令來查找文件,然後指定-mmin選項來判斷修改時間是否在60分鐘之前,-print選項來輸出文件名,在使用grep命令來判斷輸出是否為空。如果輸出不為空,則說明文件存在並且修改時間在指定時間之前,執行操作1;否則執行操作2。
七、小結
本文從基礎的判斷文件是否存在方法、判斷多個文件或目錄是否存在、使用函數封裝操作、多重判斷、判斷許可權以及文件修改時間等多個方面對sh判斷文件是否存在進行了詳細的闡述,希望能夠對讀者有所幫助。
原創文章,作者:JKOH,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/143716.html