我有一个shell script
如下。此脚本打印位于HDFS
#!/bin/bash
TIMESTAMP=`date "+%Y-%m-%d"`
path=/user/$USER/logs/${TIMESTAMP}.fail_log
path1=/user/$USER/logs/`date -d "-1 days" '+%Y-%m-%d'`.fail_log
echo filePath=$path
echo filePath1=$path1
在脚本中,paths
提供的是hdfs
个位置
在这个脚本中我得到了文件路径。
现在我想知道HDFS
中文件是否确实存在。
如果文件存在,则只打印文件路径,否则不执行任何操作。
我该怎么做?
答案 0 :(得分:14)
您可以尝试使用-test
选项来实现相同目标。
e.g。
hdfs dfs -test -[ezd] HDFS_PATH
-e
:检查文件或目录是否存在-z
:检查文件或目录是否为空-d
:检查给定的HDFS_PATH
是否为目录。示例:
if hdfs dfs -test -e $HDFS_PATH; then
echo "[$HDFS_PATH] exists on HDFS"
hdfs dfs -ls $HDFS_PATH
fi
参考:https://hadoop.apache.org/docs/r2.4.1/hadoop-project-dist/hadoop-common/FileSystemShell.html#test
答案 1 :(得分:0)
{ ...; }