老师您好,这是我写的3-6作业下载hdfs文件合并的代码,尝试了一下可以执行 有几个问题想请教您一下

老师您好,这是我写的3-6作业下载hdfs文件合并的代码,尝试了一下可以执行 有几个问题想请教您一下

GetLogData

#!/bin/bash
yesterday=$1
if [ "$yesterday" = "" ]
then
	yesterday=`date +%Y%m%d --date="1 days ago"`
fi

hdfspath=/d2/${yesterday}

localpath=/data/d2/${yesterday}

mkdir -p ${localpath}

hdfs dfs -get ${hdfspath} /data/d2

cd ${localpath}

for((i=0;i<24;i++))
do
	if [ $i -lt 10 ]
	then 
		cat user_0${i}.log >> user.log
	else
		cat user_${i}.log >> user.log
	fi
done

老师您好,这是我写的3-6作业下载hdfs文件合并的代码,尝试了一下可以执行

有几个问题想请教您一下:

1、if 语句里面是不是只能用-lt,可以用<吗

2、路径/data/d2和data/d2/有什么区别呢

3、for循环能够在hdfs上循环吗,需要外加什么代码吗

4、这样将文件合并后,都是在一行上的,如果需要换行的应该echo什么内容呢

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
徐老师 2022-12-12 17:56:54

1.也可以用<,但是容易出问题,shell不推荐这样用

2.如果后面不拼接内容的话没区别,如果后面需要拼接字符串的话就有意义了,代表目录分隔符

3.for循环是一个通用的命令,可以在迭代的时候操作本地文件或者hdfs文件。

4.echo 输出换行符即可,linux 中默认文件换行符为\n

  • 提问者 慕丝6090765 #1

    好的谢谢老师

    2022-12-12 18:02:02
  • 提问者 慕丝6090765 #2

    老师,后面的扩展内容适合直接往下学,还是先学习第五周的内容会好一些

    2022-12-12 18:12:09
  • 扩展内容可以放到后面再学,相对比较难理解。
    2022-12-12 18:13:45
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师