shell判断文件存在 shell判断文件内容是否包含
shell判断文件,目录是否存在或者具有权限centos
因shell还不是很熟练,所以做此笔记,方便查看。
shell判断文件存在 shell判断文件内容是否包含
shell判断文件存在 shell判断文件内容是否包含
shell判断文件存在 shell判断文件内容是否包含
#!/bin/sh
myPath="/var/log/d/"
myFile="/var
/log/d/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
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
-s
"fail
backup
from
test"脚本判断文件是否存在
通过git命令统计出了我在某个分支上改动的所有文件列表(文件路径是以和git工作区根目录的相对路径保存的),写入了一个文件all.txt。但是,随即发现,这个列表中的某些文件是我在开发过程中新建,然后有删除的,现在工作区中并不存在这个文件。
由于工作区的目录层级比较多,文件也比较多,挨个检查基本是不可能的。于是,写了下面的脚本,放在git工作区的根目录运行,就能够找出那些不存在的文件:
这个脚本中就用到了一个知识点,就是shell如何判断文件存在。下面是一个运行的例子:
然后,通过vim的简单排序,去重命令,可以对这些结果进行筛选和简单处理。
shell下用ls判断多个文件是否存在txt的文本
使用 if ls .c >/dev/null 2>&1;then,这是一个重定向的方法,ls所有以.c为后缀的文件,如果不存在,将标准错误重定向到标准输出,这里2>&1 的意思就是将标准错误也输出到标准输出当中。重定向中 0-标准输出,1-标准输出,2-标准错误,而No such file or directory是一个标准错误。
shell 判断目录下是否有某文件
#!/bin/bash
if [ ! -f "$1" ];then
echo "当前目录不存在文件: $1"
else
echo "当前目录存在文件: $1"
fi
运行方法: ./test.sh filename (test.sh为脚本名称,filename为文件名称)
查找目录为当前目录;
if [ -f file ];then
echo "this file is exist."
fi
find ./ -name filename
linux shell判断文件是否存在
if [ -f /home/myfile ]; then
echo "File exists!"
else
echo "File not exist!"
fi用 -f 判断即可。
shell判断文件后缀为.z是否存在
可以用“test 条件表达式”进行测试,如:test -f /etc/fstab 测试文件/etc/fstab文件是否存在
-e File如果文件File存在(Exist),则为True-s File如果文件File存在且文件大小(Size)大于零,则为True-f File如果文件File存在且是普通文件(File),则为True-d File如果文件File存在且是目录(Directory),则为True-b File如果文件File存在且是块(Block)特殊文件,则为True-c File如果文件File存在且是字符(Character)特殊文件,则为True-L File如果文件File存在且是符号链接(Link)文件,则为True-r File如果文件File存在且是可读的(Readable),则为True-w File如果文件File存在且是可写的(Writable),则为True-x File如果文件File存在且是可执行的(Executable),则为True-O File如果文件File存在且属于当前用户(Owner),则为True-G File如果文件File存在且属于当前用户组(Group),则为TrueFile1 -nt File2如果文件File1新于(Newer Then) File2,则为TrueFile2 -ot File2如果文件File1旧于(Older Then) File2,则为True
shell判断文件夹是否存在
Shell中的test命令用于检查某个条件是否成立,它可以进行数值、字符和文件三个方面的测试,那么如何使用shell来判断文件夹是否存在呢?今天小编就就带大家来看看吧。
文件存在则删除
判断文件夹是否存在
判断文件是否存在
文件比较符
如果身边就有电脑,可以跟着上文一起作,这样可以更好的理解喔
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系 836084111@qq.com 删除。