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、测试效果如下图所示