学习大数据的第32天——循环、日期

学习大数据的第32天——循环、日期

for循环

格式一:

for((i=1;i<=j;i++))

do

​ 循环体

done

格式二:

for i in {开始位置…结束位置} #中间是两个点

do

​ 循环体

done

格式三:

for i in $(seq 结束位置)

do

​ 循环体

done

格式四:

for i in $(seq 5 -1 1) 开始位置 加或者减 结束位置

do

​ 循环体

done

注意:输出的数量不一样

格式二: 输出 0 1 2 下标的数

for i in (0..2)
do
	循环体
done

格式三:输出 0 1 下标的数

for i in $(seq 2)
do
	循环体
done
循环小练习
练习一:

产生四个随机数

格式一:
for((i=1;i<=4;i++))
do
	echo $RANDOM
done

格式二:
for i in {0..4}
do
	echo $RANDOM
done

格式三:
for i in $(seq 5)
do
	echo $RANDOM
done
练习二:

倒数五秒

方法一:准备倒数五秒(使用格式四)
for i in $(seq 5 -1 1)
do
	echo -en "$i"
	sleep 1
done

方法二:(使用格式1)
for((i=1;i<=5;i++))
do
	echo -en "$i"
	sleep 1
done
练习3:按格式输出
# 按格式输出
#  $1 is aa,
#  $2 is bb,
#  $3 is cc,
#  $4 is dd,
#  $5 is ee


N=1 
for i in $@
do
        echo "\$$N is $i"
        ((N++))
done
练习4:九九乘法表
#九九乘法表
for((i=1;i<=9;i++))
do
        for((j=1;j<=i;j++))
        do
                echo -en "$j*$i="$(( i + j ))"\t"
        done
        echo -e "\n"
done
函数
从三个方面入手:1、无参无返回值,2、无参有返回值,3、有参无返回值

格式:

函数名称(){

​ 方法体

​ [return int;]

}

说明:

  • 1、可以带function fun() 定义,也可以直接fun() 定义,不带任何参数。
  • 2、参数返回,可以显示加:return 返回,如果不加,将以最后一条命令运行结果,作为返回值。 return后跟数值n(0-255)
无参无返回值的函数格式以及无参但是有返回值的函数格式
#!/bin/sh

#函数的注意事项
#格式 函数名(){
#       方法体
#     }

#无参且无返回值的函数格式
demoFun(){
        echo "这是我的第一个shell函数"
}
echo "-----函数开始执行-----"
demoFun
echo "-----函数执行完毕-----"

#无参但是有返回值的函数格式
# $? 如果有返回值,返回值的范围在0-255之间,就输出结果
#    如果返回值的范围不在范围之间,就会输出一个别的值
#    如果输入的是负数 还是得看结果是不是在这个范围,在的话就输出结果,不在的话,是负数,就会>爆出不在范围
#   键盘输入:read
funWithReturn(){
        echo "这个函数会对输入的两个数字进行相加运算..."
        echo "输入第一个数字:"
        read num1
        echo "输入第二个数字:"
        read num2
        echo "两个数字分别为 $num1$num2 "
        return $(($num1+$num2))
#       return 300
}
funWithReturn
echo "输入的两个数之和为 $? !"

无返回值但是有参数
#无返回值但是有参数
#如果输出的值,超过了传参范围,不会报错,但是不会输出
fun(){
        echo "第一个参数为$1 !" 
        echo "第二个参数为$2 !"
        echo "第三个参数为$3 !"
        echo "第五个参数为$5 !" 
        echo "第十个参数为${12} !"
        echo "参数总数有 $# 个"
        echo "作为一个字符串输出所有参数 $* !"
}
fun 1 2 3 4 5 6 7 8 9 10

日期
#!/bin/sh

#shell日期

#获取当前日期时间
date

#以指定格式显示日期时间
date "+%Y-%m-%d %H:%M:%S"

#设置系统日期
#date -s "2017-01-01 01:01"
#date -set="2017-01-01 01:01"

#有时候,我们操作日期时间,经常会要获取前几天或者后几天的时间,那么date命令也给我们提供了实现这个功能的可选项'-d'和'--date'.

#date 能用来显示或设定系统的日期和时间,在显示方面,使用者能设定欲显示的格式,格式设定为一个加号后接数个标记,其中可用的标记列表如下:

#获取下一天的时间
date -d next-day "+%Y-%m-%d %H:%M:%S"

#获取下一天的时间 (第二种方式)
date -d tomorrow '+%Y-%m-%d %H:%M:%S'

#获取上一天的时间
date -d last-day '+%Y-%m-%d %H:%M:%S'

#获取上一天的时间(第二种方式)
date -d yesterday '+%Y-%m-%d %H:%M:%S'

#获取下个月的时间
date -d next-month '+%Y-%m-%d %H:%M:%S'

#获取上个月的时间
date -d last-month '+%Y-%m-%d %H:%M:%S'

#获取下一年的时间
date -d next-year '+%Y-%m-%d %H:%M:%S'

#获取上一年的时间
date -d last-year '+%Y-%m-%d %H:%M:%S'

#获取下一周的日期时间
date -d next-week '+%Y-%m-%d %H:%M:%S'
date -d next-monday '+%Y-%m-%d %H:%M:%S'
date -d next-thursday '+%Y-%m-%d %H:%M:%S'

#2022年03月06日 星期日 21时41分27秒
date '+%c'
date '+%D'
date '+%U'

日期方面

%a : 星期几 (Sun…Sat)

%A : 星期几 (Sunday…Saturday)

%b : 月份 (Jan…Dec)

%B : 月份 (January…December)

%c : 直接显示日期和时间

%d : 日 (01…31)

%D : 直接显示日期 (mm/dd/yy)

%h : 同 %b

%j : 一年中的第几天 (001…366)

%m : 月份 (01…12)

%U : 一年中的第几周 (00…53) (以 Sunday 为一周的第一天的情形)

%w : 一周中的第几天 (0…6)

%W : 一年中的第几周 (00…53) (以 Monday 为一周的第一天的情形)

%x : 直接显示日期 (mm/dd/yyyy)

%y : 年份的最后两位数字 (00.99)

%Y : 完整年份 (0000…9999)

时间方面

%%: 打印出%

%n : 下一行

%t : 跳格

%H : 小时(00…23)

%k : 小时(0…23)

%l : 小时(1…12)

%M : 分钟(00…59)

%p : 显示本地AM或PM

%P : 显示本地am或pm

%r : 直接显示时间(12 小时制,格式为 hh:mm:ss [AP]M)

%s : 从 1970 年 1 月 1 日 00:00:00 UTC 到目前为止的秒数

%S : 秒(00…61)

%T : 直接显示时间(24小时制)

%X : 相当于%H:%M:%S %p

%Z : 显示时区

还有一种时间加减的方式

#当前时间
date +"%Y-%m-%d %H:%M:%S"

#下一天(明天)的时间
date -d “+1 day” +"%Y-%m-%d %H:%M:%S"

#前一天(昨天)的时间
date -d “-1 day” +"%Y-%m-%d %H:%M:%S"

#后一个月(下个月)的时间
date -d “+1 month” +"%Y-%m-%d %H:%M:%S"

#前一个月(上个月)的时间
date -d “-1 month” +"%Y-%m-%d %H:%M:%S"

#后一周的时间
date -d “+1 week” +"%Y-%m-%d %H:%M:%S"

#前一前的时间
date -d “-1 week” +"%Y-%m-%d %H:%M:%S"

#下一年(明年)的时间
date -d “+1 year” +"%Y-%m-%d %H:%M:%S"

#前一年(去年)的时间
date -d “-1 year” +"%Y-%m-%d %H:%M:%S"

重点:日期的有用的小技巧

获取相对某个日期前后的日期:

[root@hadoop ~]# date -d ‘may 14 -2 weeks’

把时间当中无用的0去掉,比如:01:02:25会变成1:2:25

[root@hadoop ~]# date ‘+%-H:%-M:%-S’

显示文件最后被更改的时间

[root@hadoop ~]# date “+%Y-%m-%d %H:%M:%S” -r bin/removeJDK.sh

求两个字符串日期之间相隔的天数

[root@hadoop ~]#

expr ‘(’ $(date +%s -d “2016-08-08”) - $(date +%s -d “2016-09-09”) ‘)’ / 86400

expr expr $(date +%s -d "2016-08-08") - $(date +%s -d "2016-09-09") / 86400

r

shell中加减指定间隔单位

[root@hadoop ~]# A=date +%Y-%m-%d

[root@hadoop ~]# B=date +%Y-%m-%d -d "$A +48 hours"

明天继续复习很重要的知识点——重定向、定时器
### 回答1: Spark是一个开源的大数据处理框架,它可以在分布式计算集群上进行高效的数据处理和分析。Spark的特点是速度快、易用性高、支持多种编程语言和数据源。Spark的核心是基于内存的计算模型,可以在内存中快速地处理大规模数据。Spark支持多种数据处理方式,包括批处理、流处理、机器学习和图计算等。Spark的生态系统非常丰富,包括Spark SQL、Spark Streaming、MLlib、GraphX等组件,可以满足不同场景下的数据处理需求。 ### 回答2: Spark是一个分布式计算框架,其出现是为了解决Hadoop MapReduce计算模型中的许多性能问题。与MapReduce相比,Spark的计算速度更快,因为它可以在内存中缓存数据并使用更高效的调度算法。此外,Spark还支持多种语言,包括Scala、Java、Python和R等。 Spark有多个模块,包括Spark Core、Spark SQL、Spark Streaming、Spark MLlib和Spark GraphX等。Spark Core是Spark的基本组件,在其中实现了RDD这种抽象数据结构,它可以将数据分布在多台计算机上,从而实现分布式计算。Spark SQL提供了用于处理结构化数据的API和查询语言,它允许将Spark与现有的SQL工具和数据源一起使用。Spark Streaming可以在实时流处理中使用Spark来处理数据,并提供了与常见的消息队列和流处理系统的无缝集成。Spark MLlib提供了许多机器学习算法,可以在分布式环境中进行大规模的机器学习。Spark GraphX是用于图计算的组件,可以用于处理较大的网络图和社交网络图等。 Spark可以在各种场景下使用,例如大型金融数据分析、人工智能、机器学习和图计算等领域。与Hadoop相比,Spark具有更快的速度、更轻量的资源消耗和更广泛的开源社区支持,已经成为许多大规模数据分析和处理项目的首选技术之一。 总之,Spark是一个功能强大的分布式计算框架,具有快速、灵活和多语言支持等特点,并且在实际应用中表现出色,是大数据学习中不可或缺的重要技术之一。 ### 回答3: Spark是一个快速、通用、分布式计算引擎,可以在大规模数据集上进行高效的数据处理。Spark是基于内存的计算引擎,可以将数据存储在内存中,从而提高计算速度。Spark支持多种编程语言,包括Java、Scala、Python和R,因此很容易上手,并且可以适应各种应用场景。 Spark的核心组件包括Spark SQL、Spark Streaming、Spark MLlib和Spark GraphX等,在处理不同类型的数据上都具有很强的适应性。Spark SQL可以处理结构化数据,Spark Streaming可以实现实时数据处理,Spark MLlib可以进行机器学习任务,Spark GraphX可以处理图形数据。此外,Spark还提供了一个交互式的shell,方便用户测试和调试代码。 在分布式环境下,Spark使用集群模式进行计算。集群中的每个节点都有自己的内存和CPU资源,Spark通过将任务分发到不同的节点上进行并行计算以提高计算速度。Spark还提供了一些高级特性,如广播变量、累加器和检查点等,以提高计算性能和可靠性。 在大数据处理方面,Spark有着广泛的应用场景。例如,Spark可以用于数据清洗和转换、数据仓库构建、实时数据处理和机器学习等任务。Spark还支持多种数据源,包括关系型数据库、Hadoop HDFS、NoSQL数据库和云存储等,这些数据源都可以与Spark集成,以进行数据分析和处理。 总之,Spark是一个非常重要和流行的大数据处理工具,它有强大的功能和广泛的应用场景。对于想要学习大数据处理的人来说,掌握Spark是必不可少的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值