shell檢測(cè)某個(gè)文件/文件夾是否存在詳細(xì)實(shí)例
1、shell檢測(cè)某一文件是否存在
當(dāng)你在shell中需要檢查一個(gè)文件是否存在時(shí),通常需要使用到文件操作符-e和-f。第一個(gè)-e用來(lái)檢查文件是否存在,而不管文件類型。第二個(gè)-f僅僅用來(lái)檢查文件是常規(guī)文件(不是目錄或設(shè)備)時(shí)返回true。
FILE=/etc/resolv.conf
if test -f "$FILE"; then
echo "$FILE exist"
fi
FILE=/etc/resolv.conf
if [ -f "$FILE" ]; then
echo "$FILE exist"
fi
FILE=/etc/resolv.conf
if [[ -f "$FILE" ]]; then
echo "$FILE exist"
fi2、shell檢測(cè)某一目錄是否存在
Linux系統(tǒng)中運(yùn)算符-d允許你測(cè)試一個(gè)文件是否時(shí)目錄。
例如檢查/etc/docker目錄是否存在,你可以使用如下腳本:
FILE=/etc/docker
if [ -d "$FILE" ]; then
echo "$FILE is a directory"
fi
[ -d /etc/docker ] && echo "$FILE is a directory"3、檢查文件是否不存在
和其他語(yǔ)言相似,test表達(dá)式允許使用!(感嘆號(hào))做邏輯not運(yùn)算,示例如下:
FILE=/etc/docker
if [ ! -f "$FILE" ]; then
echo "$FILE does not exist"
fi
[ ! -f /etc/docker ] && echo "$FILE does not exist"4、檢查是否存在多個(gè)文件
不使用復(fù)雜的嵌套if/else構(gòu)造,您可以使用-a(或帶[[的&&預(yù)算符)來(lái)測(cè)試是否存在多個(gè)文件,示例如下:
if [ -f /etc/resolv.conf -a -f /etc/hosts ]; then
echo "Both files exist."
fi
if [[ -f /etc/resolv.conf && -f /etc/hosts ]]; then
echo "Both files exist."
fi5、應(yīng)用實(shí)例
只跑一遍diff的時(shí)候,可能因?yàn)榄h(huán)境不穩(wěn)定導(dǎo)致diff,因此循環(huán)跑某個(gè)場(chǎng)景的diff query。具體實(shí)現(xiàn)如下,get_diff.py結(jié)合具體的場(chǎng)景定,-input_file ${result_dir}/${query_file}_${head} -output_file ${result_dir}/${query_file}_${behind}這兩個(gè)文件一樣。
base="501"
exp="506"
iter_num=2
query_name="model_iter_v2"
data_dir=./data_${query_name}
result_dir=./result_${query_name}
if [ ! -d "${result_dir}" ]; then
mkdir ${result_dir}
fi
if [ -d "${result_dir}" ]; then
rm -rf ${result_dir}/*
fi
for var in ${data_dir}/*; do
query_file=${var##*/}
cp ${data_dir}/${query_file} ${result_dir}/${query_file}_1
head=1
while [[ ${head} -lt ${iter_num} ]]
do
behind=$((${head} + 1))
echo ${query_file}_${head}
echo ${query_file}_${behind}
python get_diff.py -input_file ${result_dir}/${query_file}_${head} -b ${base} -e ${exp} -output_file ${result_dir}/${query_file}_${behind} > ${query_file}.log
sort -t" " -k2,2nr ${result_dir}/${query_file}_${behind}_result > ${result_dir}/${query_file}_${behind}
rm ${result_dir}/${query_file}_${behind}_result
if [ ${behind} -eq ${iter_num} ]; then
cp ${result_dir}/${query_file}_${behind} ./${query_file}_diff
fi
let head++
done
done總結(jié)
到此這篇關(guān)于shell檢測(cè)某個(gè)文件/文件夾是否存在的文章就介紹到這了,更多相關(guān)shell檢測(cè)文件夾是否存在內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Shell腳本實(shí)現(xiàn)自動(dòng)檢測(cè)修改最快的Ubuntu軟件源
這篇文章主要介紹了Shell腳本實(shí)現(xiàn)自動(dòng)檢測(cè)修改最快的Ubuntu軟件源,本文先是講解了實(shí)現(xiàn)的思路,并給了實(shí)現(xiàn)腳本源碼,需要的朋友可以參考下2014-10-10
Linux使用tar命令創(chuàng)建歸檔和壓縮文件的操作流程
在紅帽 Linux 系統(tǒng)中, tar 是一個(gè)非常強(qiáng)大的工具,用于創(chuàng)建歸檔文件和進(jìn)行壓縮操作,無(wú)論是備份重要數(shù)據(jù),還是在系統(tǒng)之間傳輸文件,掌握 tar 的使用方法都是非常有用的,本文將給大家逐步介紹如何使用 tar 創(chuàng)建歸檔文件,并結(jié)合不同的壓縮格式,需要的朋友可以參考下2025-04-04
利用Linux中的crontab實(shí)現(xiàn)分布式項(xiàng)目定時(shí)任務(wù)功能
crond是Linux用來(lái)定期執(zhí)行程序的命令.這篇文章主要介紹了利用Linux中的crontab實(shí)現(xiàn)分布式項(xiàng)目定時(shí)任務(wù),需要的朋友可以參考下2018-01-01
Shell腳本實(shí)現(xiàn)檢測(cè)Cygwin最快的鏡像站點(diǎn)
這篇文章主要介紹了Shell腳本實(shí)現(xiàn)檢測(cè)Cygwin最快的鏡像站點(diǎn),本文的原理和腳本也可適用其它軟件比如apache、nginx等開(kāi)源軟件,需要的朋友可以參考下2015-04-04

