shell文件夾存在
Ⅰ shell判斷文件是否存在
test -e filename
返回0則存在,返回1則不存在。
或者
if [ -e $filename ]
空格很關鍵,注意哦。
判斷文件的參數如下,本人自己整理的。
-e 文件存在
-f file 是一個 regular 文件(不是目錄或者設備文件)
-s 文件長度不為 0
-d 文件是個目錄
-b 文件是個塊設備(軟盤,cdrom 等等)
-c 文件是個字元設備(鍵盤,modem,音效卡等等)
-p 文件是個管道
-h 文件是個符號鏈接
-L 文件是個符號鏈接
-S 文件是個 socket
-t 關聯到一個終端設備的文件描述符 這個選項一般都用來檢測是否在一個給定腳本中的 stdin[-t0]或[-t1]是一個終端
-r 文件具有讀許可權(對於用戶運行這個 test)
-w 文件具有寫許可權(對於用戶運行這個 test)
-x 文件具有執行許可權(對於用戶運行這個 test)
Ⅱ 為什麼我的shell文件,文件存在但是用if判斷為什麼卻不存在,問執行腳本兩次卻存在
那是因為shell是非同步運行的,如果運行後立即用if去判斷生成的文件在不在,這時候shell仍然在運行中的,所以文件實際上是不存在的,即使差0.00001毫秒,不在的它就是不在,你說在那是因為你是過了幾秒鍾才去看的,當然在啦。如果連續運行兩次,道理還是一樣,第二次運行的時候它實際上判斷的是第一次運行時生成的文件,所以它會判斷存在。
你應該在shell運行後延時1秒以上(根據實際情況而定)再用IF去判斷。
Ⅲ shell 文件是否存在
這種問題提問的好多了~,經常有一些提問怎麼判斷文件、目錄是否存在,這個其實在linux系統中,使用if判斷語句很容易的。
舉例:
#!/bin/bash
if [ -f $file ]
then
echo "文件存在!"
else
echo 「文件不存在!」
fi
如果是判斷目錄是否存在,看下面:
#!/bin/bash
if [ -d $Folder ]
then
echo "目錄存在!"
else
echo 「目錄不存在!」
fi
Ⅳ linux shell 如何判斷一個文件是否存在
了解你的意思,首先,test命令是判斷某一個特定的文件相關信息,也就是當你使用test這個命令的時候,你是清楚它叫什麼名字的(只是你不知道它的相關信息)。如果你要判斷比如你說的以hbc*開頭的一類文件,最好就是使用ls命令或者find命令來作。你可以參考一下,下面的小測試。
mike >>> ls -d ??? 12-04-20 23:15
acp/ apc/ scl tmp/ xmy/
mike >>> test -d x?? 12-04-20 23:15
mike >>> echo $? 12-04-20 23:16
0
mike >>> test -d x* 12-04-20 23:16
test: too many arguments
使用find命令能很好查找已hbc開頭的文件或者目錄,但是它不能判斷有沒有這樣的文件,因為你不能通過find的命令執行狀態來判斷是否有這樣的文件,但是可以把find的輸出導向到一個文件,從而對文件進行判斷。如下:
mike >>> find ./ -type d -name "FUK*" -print 12-04-20 23:24
mike >>> echo $? 12-04-20 23:24
0
Ⅳ shell判斷目錄是否存在
判斷表達式中直接用-d判斷即可,參考代碼如下:
myFolder=/home/test
if[-d$myFolder];then
echo"Folderexists!"
else
echo"Folderdoesn'texist!"
fi
Shell基本上是一個命令解釋器,類似於DOS下的command。它接收用戶命令(如ls等),然後調用相應的應用程序。較為通用的shell有標準的Bourne shell (sh)和C shell (csh)。
(5)shell文件夾存在擴展閱讀:
shell文件描述符
-e 判斷對象是否存在
-d 判斷對象是否存在,並且為目錄
-f 判斷對象是否存在,並且為常規文件
-L 判斷對象是否存在,並且為符號鏈接
-h 判斷對象是否存在,並且為軟鏈接
-s 判斷對象是否存在,並且長度不為0
-r 判斷對象是否存在,並且可讀
-w 判斷對象是否存在,並且可寫
-x 判斷對象是否存在,並且可執行
Ⅵ shell判斷文件夾是否存在
代碼1:
if [ test -d 文件夾名稱 ] ; then
echo "文件夾存在!"
else
echo "文件夾不存在!"
fi
代碼2:
test -d 文件夾 && echo "文件夾存在" || echo "文件夾不存在"
Ⅶ Shell 判斷ftp上某個路徑、文件是否存在
如果FTP上的文件很大,獲取文件會很費時。應該可以不用獲取直接判斷的,下面供借鑒:
#!/bin/bash
server=127.0.0.1#改為你自己的FTP伺服器IP
user=root#修改為你自己的FTP登錄用戶名
password=root#修改為你自己的FTP用戶密碼
errlog=./err.log#用於記錄FTP錯誤
ftpCheckFile()
{
ftp-n-i$server<<EOF
USER$user
PASS$password
ls$1
bye
EOF
}
rm-f$errlog
ftpCheckFile$1>/dev/null2>$errlog
bytes=`wc-c$errlog|awk'{print$1}'`
if[$bytes-eq0];then
echo"$1-Exist!"
else
echo"$1-Notexist!"
fi
用的時候在腳本名後跟一個參數,就是你要判斷的文件名或路徑名。
思路:如果文件或路徑不存在,FTP中的ls命令會執行錯誤,從而在錯誤日誌err.log中有記錄。
通過解析該錯誤日誌的內容,可以得知文件或目錄是否存在。
我這里暫時沒有環境試驗,所以沒法得知錯誤日誌的格式,只能暫且通過判斷日誌位元組大小是否為0來看是否發生了錯誤,而無法確定具體錯誤種類。
Ⅷ Shell腳本中判斷文件,目錄是否存在或者具有
#!/bin/sh
NovaPath=」/var/log/httpd/」
NovaFile=」/var /log/httpd/access.log」
#這里的-x 參數判斷$NovaPath是否存在並且是否具有可執行許可權
if [ ! -x "$NovaPath"]; then
mkdir 「$NovaPath」
fi
#這里的-d 參數判斷$NovaPath是否存在
if [ ! -d "$NovaPath"]; then
mkdir 「$NovaPath」
fi
#這里的-f參數判斷$NovaFile是否存在
if [ ! -f "$NovaFile" ]; then
touch 「$NovaFile」
fi
#其他參數還有-n,-n是判斷一個變數是否是否有值
if [ ! -n "$NovaVar" ]; then
echo 「$NovaVar is empty」
exit 0
fi
#兩個變數判斷是否相等
if [ "$var1" = "$var2" ]; then
echo 『$var1 eq $var2′
else
echo 『$var1 not eq $var2′
fi
Ⅸ 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 "$myVar is empty"
exit 0
fi
#兩個變數判斷是否相等
if [ "$var1" = "$var2" ]; then
echo '$var1 eq $var2'
else
echo '$var1 not eq $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是否相等 -r file用戶可讀為真
-w file用戶可寫為真
-x file用戶可執行為真
-f file文件為正規文件為真
-d file文件為目錄為真
-c file文件為字元特殊文件為真
-b file文件為塊特殊文件為真
-s file文件大小非0時為真
-t file當文件描述符(默認為1)指定的設備為終端時為真
######################################################### 含條件選擇的shell腳本
對於不含變數的任務簡單shell腳本一般能勝任。但在執行一些決策任務時,就需要包含if/then的條件判斷了。shell腳本編程支持此類運算,包 括比較運算、判斷文件是否存在等。基本的if條件命令選項有: -eq —比較兩個參數是否相等(例如,if [ 2 –eq 5 ])
-ne —比較兩個參數是否不相等
-lt —參數1是否小於參數2
-le —參數1是否小於等於參數2
-gt —參數1是否大於參數2
-ge —參數1是否大於等於參數2
-f — 檢查某文件是否存在(例如,if [ -f "filename" ])
-d — 檢查目錄是否存在
幾 乎所有的判斷都可以用這些比較運算符實現。腳本中常用-f命令選項在執行某一文件之前檢查它是否存在。 ################################################################## 判斷文件是否存在 #!/bin/sh
today=`date -d yesterday +%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 "fail backup from test" [email protected] <error.log
fi
Ⅹ linux shell 判斷文件是否存在 存在就刪除
1、linux shell中判斷文件是否存在,可以使用test命令的-a參數。藉助於if結構進行判斷即可。
2、以~/t/thello.py為例,檢測這個文件,如果存在將其刪除,示例代碼如下:
if[[-a~/t/hello.py]];then
echo"存在文件";
rm-f~/t/hello.py
fi;
3、測試效果如下圖所示