背景
Azkaban定时调度程序需要读取以日期为前缀的文件进行处理,但运行之前需要判断路径是否存在。
方法
- 命令行内查看路径是否存在,可以使用*通配符。echo $? ->获取上一条shell命令的返回,0代表路径存在,1代表路径不存在
- sh脚本文件查看hdfs路径是否存在:
#!/bin/bash
#$(date -d '-1 day' '+%Y%m%d') ->输出昨日日期,如:20200507
#这里可匹配以20200507*开头的文件路径
hdfs dfs -test -e /home/dl_data/capture/$(date -d '-1 day' '+%Y%m%d')*
#左右必须有空格,不然提示:line 3: [0: command not found
if [ $? -eq 0 ];then
echo 'exist'
else
echo 'Error!'
fi
#结果
exist
- sh脚本文件ssh到远程服务器(端口号:8122, 用户名:hdfs, 远程服务器名:sparkmaster2),无法通过"$?"这个上下文变量查看远程服务器上hdfs文件路径是否存在,因