shell判断文件,目录是否存在或者具有权限centos

因shell还不是很熟练,所以做此笔记,方便查看。

shell判断文件存在 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

mail

-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来判断文件夹是否存在呢?今天小编就就带大家来看看吧。

文件存在则删除

判断文件夹是否存在

判断文件是否存在

文件比较符

如果身边就有电脑,可以跟着上文一起作,这样可以更好的理解喔