Linux下簡單的判斷目錄中是否有新文件的Shell?
因shell還不是很熟練,所以做此筆記,方便查看。
#!/bin/sh
myPath="/var/log/httpd/"
myFile="/var/log/httpd/access.log"
#這里的-x參數判斷$myPath是否存在并且是否具有可執行權限
if[!-x"$myPath"];then
mkdir"$myPath"
fi
#這里的-d參數判斷$myPath是否存在
if[!-d"$myPath"];then
mkdir"$myPath"
fi
#這里的-f參數判斷$myFile是否存在
if[!-f"$myFile"];then
touch"$myFile"
fi
#其他參數還有-n,-n是判斷一個變量是否是否有值
if[!-n"$myVar"];then
echo"$myVarisempty"
exit0
fi
#兩個變量判斷是否相等
if["$var1"="$var2"];then
echo'$var1eq$var2'
else
echo'$var1noteq$var2'
fi
========================================
shell判斷語句
流程控制"if"表達式如果條件為真則執行then后面的部分:if....;then
....
elif....;then
....
else
....
fi
大多數情況下,可以使用測試命令來對條件進行測試。比如可以比較字符串、判斷文件是否存在及是否可讀等等… 通常用"[]"來表示條件測試。注意這里的空格很重要。要確保方括號的空格。
[-f"somefile"]:判斷是否是一個文件
[-x"/bin/ls"]:判斷/bin/ls是否存在并有可執行權限
[-n"$var"]:判斷$var變量是否有值
["$a"="$b"]:判斷$a和$b是否相等-rfile 用戶可讀為真
-wfile 用戶可寫為真
-xfile 用戶可執行為真
-ffile 文件為正規文件為真
-dfile 文件為目錄為真
-cfile 文件為字符特殊文件為真
-bfile 文件為塊特殊文件為真
-sfile 文件大小非0時為真
-tfile 當文件描述符(默認為1)指定的設備為終端時為真
#########################################################
含條件選擇的shell腳本
對于不含變量的任務簡單shell腳本一般能勝任。但在執行一些決策任務時,就需要包含if/then的條件判斷了。shell腳本編程支持此類運算,
包括比較運算、判斷文件是否存在等。基本的if條件命令選項有:-eq—比較兩個參數是否相等(例如,if[2–eq5])
-ne—比較兩個參數是否不相等
-lt—參數1是否小于參數2
-le—參數1是否小于等于參數2
-gt—參數1是否大于參數2
-ge—參數1是否大于等于參數2
-f—檢查某文件是否存在(例如,if[-f"filename"])
-d—檢查目錄是否存在
幾乎所有的判斷都可以用這些比較運算符實現。腳本中常用-f命令選項在執行某一文件之前檢查它是否存在。##################################################################判斷文件是否存在
#!/bin/sh
today=`date-dyesterday+%y%m%d`
file="apache_$today.tar.gz"
cd/home/chenshuo/shell
if[-f"$file"];then
echo"OK"
else
echo"error$file">error.log
mail-s"failbackupfromtest"linuxcy@126.comfi