在Linux文件系统中,Shell脚本判断某个文件是否存在:
# 这里的-f参数判断$file是否存在
if [ ! -f "$file" ]; then
echo "文件不存在!"
fi
1
2
3
4
Hadoop提供了test命令判断HDFS上某个文件或目录是否存在:
[root@node00 ~]# hdfs dfs -help
...
-test -[defsz] <path> :
Answer various questions about <path>, with result via exit status.
-d return 0 if <path> is a directory.
-e return 0 if <path> exists.
-f return 0 if <path> is a file.
-s return 0 if file <path> is greater than zero bytes in size.
-z return 0 if file <path> is zero bytes in size, else return 1.
...
1
2
3
4
5
6
7
8
9
10
用test命令来判断某个文件或目录是否存在。如果文件或目录存在,返回0;反之返回1。
[root@node00 ~]# hdfs dfs -test -e /path/not/exist
[root@node00 ~]# echo $?
1
[root@node00 ~]# hdfs dfs -test -e /path/exist
[root@node00 ~]# echo $?
0
[root@node00 ~]#
1
2
3
4
5
6
7
8
那么我们可以在Shell脚本里面判断HDFS上某个文件是否存在:
#!/bin/bash
hdfs dfs -test -e /path/exist
if [ $? -eq 0 ] ;then
echo 'exist'
else
echo 'Error! NO Such File Or Directory !'
fi
...
1
2
3
4
5
6
7
8
test 命令还可以判断:**
-d某个路径是否是文件夹( -d);
-f某个路径是否是文件( -f);
-s某个文件大小是否大于0;
-z某个文件大小等于0
#!/bin/bash
#判断是否是文件夹
hdfs dfs -test -d /path/exist
if [ $? -eq 0 ] ;then
echo 'Is a directory'
else
echo 'Is not a directory'
fi
#判断是否是文件
hdfs dfs -test -f /path/exist
if [ $? -eq 0 ] ;then
echo 'Is a file'
else
echo 'Is not a file'
fi
#判断文件大小是否大于0
hdfs dfs -test -s /path/exist
if [ $? -eq 0 ] ;then
echo 'Is greater than zero bytes in size'
else
echo 'Is not greater than zero bytes in size'
fi
#判断文件大小是否等于0
hdfs dfs -test -z /path/exist
if [ $? -eq 0 ] ;then
echo 'Is zero bytes in size.'
else
echo 'Is not zero bytes in size. '
fi
---------------------
【转载,仅作分享,侵删】
作者:storm_fury
来源:CSDN
原文:https://blog.csdn.net/weixin_43215250/article/details/85120123
版权声明:本文为博主原创文章,转载请附上博文链接!
|
|