Shell语言基本操作二(Xshell5)

数组:有下标

格式:名称=(元素 元素...元素)
操作
	通过下标获取元素
		格式:${数组名称[下标]}
	注意:当下标为*时,表示所有 没有下标表示数组中下标为0

	获取长度:
		格式:${#数组名称[*]}
注意:元素和元素之间以空格进行分割,因为shell中没有数据类型限制,数组中可以同时存储不同的数据类型

数组举例:
1、

#/bin/sh
array=(1 2 3 4 5)
echo -n "数组的数据为:"
echo ${array[*]}
echo -n "数组的长度为:"
echo ${#array[*]}

2、

#/bin/sh
#对数组进行遍历
array=(1 2 3 4 5)
#方式一:
for ((i=0;i<=$[${#array[*]}-1];i++))
do
        echo ${array[${i}]}
done

echo "----------------"
#方式二:
for j in ${array[*]}
do
        echo ${j}
done

echo "----------------"
#关于方式二给值的拓展1:
for x in {1..5}
do
        echo ${x}
done

echo "---------------"
#关于方式二给值的拓展2:
for y in `seq 1 5`
do
        echo ${y}
done
echo "---------------"
#关于方式二给值的拓展3:
#注意:如果只有一个值,表示结束(从1开始到结束)
for z in `seq 5`

do

        echo ${z}

done

键盘录入

格式: read 变量名称
注意:变量不需要进行初始化

echo

选项
	不加:输出并换行
	-n:输出不换行

for循环

格式1:java格式for循环

for ((i;i<=10;i++))
	do
		执行的代码
	done

格式2:python格式for循环

for 变量 in 值
	do
		执行的代码
	done
	给值的格式
		格式1:{开始..结束}
		格式2:`seq 开始  结束`
			注意:如果只有一个值,表示结束(从1开始到结束)

累加:
格式:osum= [ 值 + 值 ] 使 用 l e t : 再 使 用 变 量 时 , 不 需 要 使 用 [值+值] 使用let:再使用变量时,不需要使用 [+]使let:使,使去引用变量
格式:let osum+=i
案例:循环获取1-100奇数和和偶数和

for ((i=1;i<=100;i++))
	do
	        if ((${i}%2==0))
		        then
		                #osum+=${i} #做的是拼接
		                osum=$[${osum}+${i}]
		        else
		                #jsum=$[${jsum}+${i}]
		                #使用let时,变量不需要再$去引用了 可以直接写
		                let jsum+=i
	        fi
	done

案例:遍历数组

list=(1 2 3 4 5)
		java格式遍历
			for ((i=0;i<=$[${#list[*]}-1];i++))
			do
			       echo ${list[${i}]}
			done

pyhton格式遍历

for i in ${list[*]}
		do
		        echo ${i}
		done

案例
打印直角在左下三角形
#打印5*5的直角三角形

for ((i=1;i<=5;i++)) #外循环决定行
do
    for ((j=1;j<=${i};j++))  # 第一行一列 第二行有两列
    do
        echo -n "* "
    done
    echo ""
done

for循环举例:

#/bin/sh
echo -n "请输入上、下限数字:"
read max min
for ((i=${min};i<=${max};i++))
do
        if ((${i}%2==0))
        then
                osum=$[${osum}+${i}]
        else
                jsum=$[${jsum}+${i}]
        fi
done
echo "${min}-${max}偶数和为:"${osum}
echo "${min}-${max}奇数和为:"${jsum}

函数(方法)

方法定义格式:方法名称(){
				代码体
				return 值
			}	
方法调用格式:直接使用方法名称
**注意:方法调用在方法定义之下**

参数
	$0:永远是脚本名称(忽略不做为参数)
	写在方法调用之后
	从$1开始接收
	$#:参数的长度(不包含脚本名称)
	$*:获取所有的参数
返回值
	注意:返回值只能是数字
	    通过$?去接收
	    只能接收一次,没有返回值接收的就是当前状态

函数举例:
1、

#/bin/sh
fun ()
{
        echo "这个一个函数"
        return 10 #返回值只能是数字 
}
fun
#通过$?去接收返回值, 只能接收一次,没有返回值接收的就是当前状态(默认为0)
echo $?

2、

#/bin/sh
fun()
{
        echo $0 #$0:永远是脚本名称(忽略不做为参数)
        $1
        $2
}
fun
#$#:参数的长度(不包含脚本名称)
echo $#
#$*:获取所有的参数
echo $*

shell日期

获取当前日期时间
date +"%Y-%m-%d %H:%M:%S"

格式化日期时间:
date -d today +"%Y-%m-%d %H:%M:%S"

加减日期时间
date +%Y%m%d        //显示前天年月日
date +%Y%m%d --date="+1 day"  //显示前一天的日期
date +%Y%m%d --date="-1 day"  //显示后一天的日期
date +%Y%m%d --date="-1 month"  //显示上一月的日期
date +%Y%m%d --date="+1 month"  //显示下一月的日期
date +%Y%m%d --date="-1 year"  //显示前一年的日
date +%Y%m%d --date="+1 year"  //显示下一年的日期

重定向:把标准文件更改输出位置

执行命令时会打开三个文件
标准输入文件(stdin):stdin的文件描述符为0,默认从stdin读取数据。
标准输出文件(stdout):stdout 的文件描述符为1,默认向stdout输出数据。
标准错误文件(stderr):stderr的文件描述符为2,向stderr流中写入错误信息。

例如:标准输出文件写入到文件中
	ll test.txt error.txt 
	有两条结果,一条正确的 一条错误的
	ll test.txt error.txt > test.txt 默认是把正确文件信息写入
	ll test.txt error.txt 1> test.txt 默认是把正确文件信息写入
	ll test.txt error.txt 2> test.txt 默认是把错误文件信息写入
	ll test.txt error.txt > test.txt 2>&1 
	有两条结果,一条正确的 一条错误的,>test.txt默认把正确信息写入,想要都写入 需要把错误信息当做正确信息一起写入(2>&1)

重定向举例:在这里插入图片描述

定时器

例子:工作中,需要处理一天的数据(等到0-24之后),但是生活中不可能等到24点之后处理再回家
	并且处理的代码(脚本)内容一样(每天的数据格式都是一样的,处理的内容也是一样的),需要每天执行一次(是在24之后),
	可以通过定时器,对脚本或代码进行定时(第二天3点),	这时脚本或代码就会每天带这个时间点就会执行,自己就可以正常回家 等待二天上班查看任务是否执行成功
格式:*(分钟) *(小时) *(日) *(月) *(星期) command
创建定时任务:通过crontab -e 打开crontab文件按照定时器格式进行书写
	例如:* * * * * sh /usr/local/soft/shell2/data.sh (每分钟执行一次) 
查看定时器的执行情况
	tail -f /var/log/cron(文件表示定时器的执行日志)
	注意:脚本路径需要给上全路径

定时器举例:
主要是在定时器文件里写了每一分钟追加在test.txt存储一行"hello"
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

友培

数据皆开源!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值