关于linux,shell脚本中怎样判断文件是不是有内容?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于linux,shell脚本中怎样判断文件是不是有内容?相关的知识,希望对你有一定的参考价值。

例如:有一个文件,它之中每一列前有编号,每输入一条数据我要为他自动+1,在此之前我要判断这个文件中是否有数据!如果有就为编号加1,如果没有就为编号设为0001!

可以用“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),则为True
File1 -nt File2 如果文件File1新于(Newer Then) File2,则为True
File2 -ot File2 如果文件File1旧于(Older Then) File2,则为True
参考技术A 判断文件大小是不是0kb行不行?使用-s
if [ -s filenpath]; then
文件内容不为空
else
文件内容为空
fi本回答被提问者采纳

要在一台主机上执行shell脚本判断另一台上的某个文件是不是存在,这个shell语句该怎么写?

参考技术A 给你想几种办法:
1、文件共享,可采用nfs或rsync之类的方式实现目标主机磁盘可在本地检索或操作,那么你可以通过更改目标主机在本地的映射来操作
2、远程发送指令:这里那就需要目标主机上有相应的服务来监听并应答从远端发出的指令了,expect可以做到通过ssh登陆到目标主机执行相应指令并返回
当然,第二种方式有很多的选择,例如通过http或sokect,但是完全用shell写可能比较难以实现
参考技术B

首先, 你要设置ssh信任. 这样ssh远程主机的时候就不用输密码. 关于怎么设置信任, 请问google. 

然后, 脚本大概这样

if ssh root@HOSTNAME 'head a';then
echo 'a exists'
else
echo 'a does not exist'
fi

以上是关于关于linux,shell脚本中怎样判断文件是不是有内容?的主要内容,如果未能解决你的问题,请参考以下文章

要在一台主机上执行shell脚本判断另一台上的某个文件是不是存在,这个shell语句该怎么写?

用shell脚本判断文件是不是在变化

求Bash Shell脚本,判定文件是不是存在。

如何在shell脚本中,判断一个基本命令执行是不是成功

linux shell 脚本 判断今天是不是是星期一 ,下面代码有错误,每次都是输出的false

linux shell 如何判断一个文件是不是存在