初识shell

1.什么是shell ? 脚本语言 python

1.一个编程的语言 	
2.可以执行的文件
3.文件内容 linux命令组成的

1.shell语法入门

1.入门
1.文件 xxx.sh 结尾
2.第一行 #!/bin/bash

1.编写脚本 
vim wc.sh

2.得有执行权限【不一定】
	1.不给文件权限 
	sh xxx.sh 

	[root@sygy10 shell]# sh ./wc.sh 
	word count
	[root@sygy10 shell]# cat wc.sh 
	#!/bin/bash
	echo "word count"

	2.给文件 执行权限
	[root@sygy10 shell]# chmod 744 ./wc.sh
	[root@sygy10 shell]# ./wc.sh 
	word count

	[root@sygy10 shell]# sh ./wc.sh 
	word count

	补充:
		1.给权限
		[root@sygy10 shell]# chmod u+x ./wc.sh
		[root@sygy10 shell]# ./wc.sh 
		word count
		[root@sygy10 shell]# ~/shell/wc.sh 
		word count
		[root@sygy10 shell]# sh ~/shell/wc.sh 
		word count

		2. debug 
		1.[root@sygy10 shell]# sh -x ./wc.sh

		2.
			#!/bin/bash -x
			echo "word count"

2.定义变量 引用

eg:
[root@sygy10 shell]# cat variable.sh 
name="zhangsan"
dt1="date"
dt2=`date`
echo $name
echo $dt1
echo $dt2

1.定义变量的方式:
	key=value
	注意: 
		1.= 前后不能有空格
		2.变量名一般都是大写的【标准】
2.变量的种类:
	shell中变量的数据类型 =》 string 
	1.静态
		k="v" k='v' k=v
	2.动态 
		k=`v` : v是变量 v系统自带的命令
3.引用 
	$k 
	${k} 

任务调度:
shell =》
时间点: T+1 、h+1 20min
20220414 =》20220413
20220414 0:05
1.yarn资源
2.看你几点上班
crontab 命令 =》 定时调度
开源框架:
dophschudule 【恢复数据、重跑数据】
xxl 【shell -》 】
azkanban xx
ozzio xx
airflow 【费劲】
runduck
自己开发

3.shell脚本 参数传递 :
1.$n
$1 $2

[root@sygy10 shell]# cat parameter.sh 
echo "脚本文件名: $0"
echo "第一个参数:$1"
echo "第二个参数:$2"
echo "参数个数: $#"
echo "传递的参数作为一个字符串: $*"
echo "传递的参数作为一个字符串: $@"
echo "脚本运行时的pid :$$"

补充:
	1.传递参数 “空格” 作为符号分割
	2.参数本身带有空格 要加双引号

4.数组
语法格式:
arr=(v1 v2 … vn)
1.数组用()表示
2.元素用 空格 分割
eg:
[root@sygy10 shell]# cat arr.sh
arr=(zs lisi ww zl)
echo “所有元素 : ${arr[@]}”
echo “第一个元素 : ${arr[0]}”
echo “元素个数 : ${#arr[@]}”

5.流程控制
分支
循环
1.分支 if else

语法格式:
	if condition;then
		业务代码
	else
		业务代码
	fi

condition => 条件判断语法
[ condition ]
结果:
非空 true
空 false
[ hadoop ]

	$? => 获取上一个程序运行的结果 :
			1.成功 0
			2.失败 非0的数据
	条件表达式:
		1.数值判断
			=  等于
			== 等于
			-lt 小于
			-eq 等于 
			-ge 大于等于
			-le 小于等于
			-gt 大于
			-ne 不等于

		2.权限判断 
			-r 
			-w 
			-x 
		3.文件判断 
			-f 
			-e 
			-d 

		eg:
			[root@sygy10 shell]# cat if.sh 
			name1="zs"
			name2="lisi"

			if [ ${name1} == ${name2} ];then
				echo "等于"
			else 
				echo "不等于"
			fi
	if elif 语法格式:
		if condition;then
			业务代码
		elif condition;then
			业务代码	
		else
			业务代码
		fi
	
	eg:
		[root@sygy10 shell]# cat if_2.sh 
		score=$1

		if [ ${score} -gt 90 ];then
			echo "优秀"
		elif [ ${score} -ge 60 ];then
			echo "良"
		else 
			echo "不及格"
		fi

循环:
语法格式:
foreach:
for el in item1 item2 … itemn
do
业务代码
done

	for i :
		语法格式 :
			for((i=0;i<size;i++))
			do 
				业务代码
			done
	eg:
		[root@sygy10 shell]# cat for.sh 
		for x in 1 2 3 4
		do

			echo "${x}"
		done

		echo "-----------------"

		for((i=0;i<5;i++))
		do 
			echo "v is ${i}"
		done

	while:
		while condition
		do 
			业务代码
		done

	eg:
		[root@sygy10 shell]# cat while.sh 
		i=1
		while ((${i}<=5))
		do
			echo "v is ${i}"
			let i++
		done

	总结:
		条件表达式 不能用 <  > 

		while for  能用 < >  不能用 -gt 

		[]  =》 条件判断
		()  =>  数值运算 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值