shell脚本 循环检测目标文件是否存在

本文介绍了如何在Linux shell脚本中检测本地和HDFS上的文件是否存在,以及在Hive表生成和分区表中应用这些技巧。通过循环检测和指定检测次数确保文件或表的可用性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 检测本地文件是否存在

#!/bin/bash 
 
# 判断aa.txt 是否存在
file='aa.txt'
if [ -e $file ];then
    echo "$file exist"
else
    echo "$file not exist"
fi

注意:在shell脚本中当使用“ = ”给变量赋值的时候,在 “ = ”两边一定不能加空格,否者会把变量名当作一个命令来执行而报出“ command not found ”的错误。

下面是一些相关的参数:

-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)

2. 循环检测hdfs上某一文件是否存在

# hadoop内置了提供了判断某个文件是否存在的命令
hadoop fs -test 
-e 判断是否存在
-d 判断是否是目录
-f 判断是否是个文件
-s 判断内容是否大于0bytes,大于0为真
-z 判断内容是否等于0bytes,为0真
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值