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 "$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
『貳』 shell中判斷文件和目錄,並顯示相應信息
有問制題可以HI我
[root@firewall ~]# sh test1.sh
/etc/passwd
/etc/passwd是文件,大小為4.0K
[root@firewall ~]# sh test1.sh
/etc
/etc是目錄,有142文件
[root@firewall ~]# sh test1.sh
/dev/sda
沒有該文件或目錄
[root@firewall ~]# sh test1.sh
/dev/sda /etc/passwd
你輸錯了
#!/bin/sh
read text
if [ -f "$text" ];then
echo "$text是文件,大小為` -h $text | awk '{print $1}'`"
elif [ -d "$text" ];then
echo "$text是目錄,有`ls -l $text | grep -v "^d" | wc -l`文件"
elif [ -e "$text" -a ! -f "$text" -a ! -d "$text" ];then
echo "沒有該文件或目錄"
else
echo "你輸錯了"
fi
exit
『叄』 Shell腳本判斷是文件還是目錄怎麼寫
#!/bin/bash
if[-d$1]
then
echo"$1isadirectory."
exit
elif[-f$1]
then
echo-n"$1isafile,"
if[-L$1]
then
echo"anditisalsoasymboliclink."
A=`ls-L$1`
if[-e$A]
then
echo"Symboliclinkexist."
else
echo"Symboliclinknotexist."
fi
exit
else
echo"butitisnotasymboliclink."
exit
fi
fi
『肆』 shell腳本,判斷一個目錄內是文件還是子目錄
你能不能一次把問題提完整呢。
shell 沒有提供處理文件系統的底層功能。
可以使用重定向,在得到一行後就立刻匹配,完成後立刻退出。它不需要等到ls命令完成。可以操作目錄下存在大量文件的情況。
效率最快的是這個:
ls /opt -1F --sort=none | ( read LINE;echo "$LINE"| if grep -q "/$" ; then exit 0 ;else exit 1 ; fi ;)
這個命令返回0 表示/opt 目錄下存在目錄(不代表全部都是目錄,這條命令基於你在問題中的假設)。返回非0表示包含非目錄文件。
-1 表示ls 輸出一行個文件。
-F 表示輸出的每個文件後綴一個符號表示文件類型,文件夾的後綴為 /
--sort=none 表示按照磁碟存儲順序進行輸出,不進行排序。
|grep -q '/$' 表示 如果匹配到/ 結尾的行。
最近幾天你提的問題相當零散。都不知道你的思維對不對。
shell 本身就不是高效率的語言。想要高效率應該使用其他腳本語言,例如perl 。
『伍』 使用shell如何判斷指定目錄是否有某個文件
R內建多種統計學及數字分析功能。因為S的血緣,R比其他統計學或數學專用的編程語言有更強的物件導向功能。
R的另一強項是繪圖功能,制圖具有印刷的素質,也可加入數學符號。
雖然R主要用於統計分析或者開發統計相關的軟體,但也有人用作矩陣計算。其分析速度可媲美GNU Octave甚至商業軟體MATLAB。
『陸』 shell判斷目錄下是否有文件
if [ `ls b|wc -l` -eq 0 ];then
echo no file
fi
『柒』 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)。
(7)shell判斷目錄擴展閱讀:
shell文件描述符
-e 判斷對象是否存在
-d 判斷對象是否存在,並且為目錄
-f 判斷對象是否存在,並且為常規文件
-L 判斷對象是否存在,並且為符號鏈接
-h 判斷對象是否存在,並且為軟鏈接
-s 判斷對象是否存在,並且長度不為0
-r 判斷對象是否存在,並且可讀
-w 判斷對象是否存在,並且可寫
-x 判斷對象是否存在,並且可執行
『捌』 shell腳本判斷文件夾下是否有文件
我們可以通過判斷文件夾中的文件的列表是否版為空來權判斷:
if[[-n$(ls)]];then
#Dosomethinghere
else
#Dosomethingelsehere
fi
『玖』 shell腳本判斷是文件還是文件夾
ls
-ld
文件夾路徑
|
awk
'{print
int($5/1024)}'
或者:
-b
文件夾路徑
|
awk
'{print
int($1/1024)}'
跟你上面計算文件大小類似,得到的都是以kb為單版位權的大小。
如果要以byte為單位,不要除以1024也不要int取整就是了。
注意:linux的ext2或ext3文件系統會給目錄分配一個inode塊(索引節點),用來記錄文件信息,所以文件夾的大小不是簡單地將其中文件大小累加就能得到的,還包括了這個索引節點的大小。索引節點是一個結構,它包含了一個文件的長度、創建及修改時間、許可權、所屬關系、磁碟中的位置等信息。
『拾』 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