文件比較符
-e 判斷對象是否存在 -d 判斷對象是否存在,並且為目錄 -f 判斷對象是否存在,並且為常規文件 -L 判斷對象是否存在,並且為符號鏈接 -h 判斷對象是否存在,並且為軟鏈接 -s 判斷對象是否存在,並且長度不為0 -r 判斷對象是否存在,並且可讀 -w 判斷對象是否存在,並且可寫 -x 判斷對象是否存在,並且可執行 -O 判斷對象是否存在,並且屬於當前用戶 -G 判斷對象是否存在,並且屬於當前用戶組 -nt 判斷file1是否比file2新 [ "/data/file1" -nt "/data/file2" ] -ot 判斷file1是否比file2舊 [ "/data/file1" -ot "/data/file2" ]
文件夾不存在則創建
if [ ! -d "/data/" ];then mkdir /data else echo "文件夾已經存在" fi
文件存在則刪除
if [ ! -f "/data/filename" ];then echo "文件不存在" else rm -f /data/filename fi
判斷文件夾是否存在
if [ -d "/data/" ];then echo "文件夾存在" else echo "文件夾不存在" fi
判斷文件是否存在
if [ -f "/data/filename" ];then echo "文件存在" else echo "文件不存在" fi
#shell判斷文件夾是否存在
#如果文件夾不存在,創建文件夾
if [ ! -d "/myfolder" ]; then
mkdir /myfolder
fi
#shell判斷文件,目錄是否存在或者具有權限
folder="/var/www/"
file="/var/www/log"
# -x 參數判斷 $folder 是否存在並且是否具有可執行權限
if [ ! -x "$folder"]; then
mkdir "$folder"
fi
# -d 參數判斷 $folder 是否存在
if [ ! -d "$folder"]; then
mkdir "$folder"
fi
# -f 參數判斷 $file 是否存在
if [ ! -f "$file" ]; then
touch "$file"
fi
# -n 判斷一個變量是否有值
if [ ! -n "$var" ]; then
echo "$var is empty"
exit 0
fi
# 判斷兩個變量是否相等
if [ "$var1" = "$var2" ]; then
echo '$var1 eq $var2'
else
echo '$var1 not eq $var2'
fi
#!/bin/sh #測試各種字符串比較操作。 #shell中對變量的值添加單引號,爽引號和不添加的區別:對類型來說是無關的,即不是添加了引號就變成了字符串類型, #單引號不對相關量進行替換,如不對$符號解釋成變量引用,從而用對應變量的值替代,雙引號則會進行替代 #author:tenfyguo A="$1" B="$2" echo "輸入的原始值:A=$A,B=$B" #判斷字符串是否相等 if [ "$A" = "$B" ];then echo "[ = ]" fi #判斷字符串是否相等,與上面的=等價 if [ "$A" == "$B" ];then echo "[ == ]" fi #注意:==的功能在[[]]和[]中的行為是不同的,如下 #如果$a以”a”開頭(模式匹配)那么將為true if [[ "$A" == a* ]];then echo "[[ ==a* ]]" fi #如果$a等於a*(字符匹配),那么結果為true if [[ "$A" == "a*" ]];then echo "==/"a*/"" fi #File globbing(通配) 和word splitting將會發生, 此時的a*會自動匹配到對應的當前以a開頭的文件 #如在當前的目錄中有個文件:add_crontab.sh,則下面會輸出ok #if [ "add_crontab.sh" == a* ];then #echo "ok" #fi if [ "$A" == a* ];then echo "[ ==a* ]" fi #如果$a等於a*(字符匹配),那么結果為true if [ "$A" == "a*" ];then echo "==/"a*/"" fi #字符串不相等 if [ "$A" != "$B" ];then echo "[ != ]" fi #字符串不相等 if [[ "$A" != "$B" ]];then echo "[[ != ]]" fi #字符串不為空,長度不為0 if [ -n "$A" ];then echo "[ -n ]" fi #字符串為空.就是長度為0. if [ -z "$A" ];then echo "[ -z ]" fi #需要轉義<,否則認為是一個重定向符號 if [ $A /< $B ];then echo "[ < ]" fi if [[ $A < $B ]];then echo "[[ < ]]" fi #需要轉義>,否則認為是一個重定向符號 if [ $A /> $B ];then echo "[ > ]" fi if [[ $A > $B ]];then echo "[[ > ]]" fi
待續...
