栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Shell复习2

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Shell复习2

Shell复习2 1.流程控制 1.if语句

1.单分支

if [ 条件判断句 ]

then

程序

fi

2.多分支

if [ 条件判断句 ]

then

elif [ 条件判断句 ]

then

程序

else

程序

fi

3.注意事项:

①[ 条件判断式 ],中括号和条件判断式之间必须有空格

②if 后要有空格

2.case语句

1.基本语法(代码)

case $变量名 in

"值 1")

程序

;;

"值 2")

程序

;;

*)

程序

;;

esac

2.注意事项:

(1)case 行尾必须为单词“in”,每一个模式匹配必须以右括号“)”结束。

(2)双分号“;;”表示命令序列结束,相当于 java 中的 break。

(3)最后的“*)”表示默认模式,相当于 java 中的 default。

3.for循环

1.基本用法1

for((数学表达式))

例如for(i=0;i<=100;i++)

就类似我们java代码些for循环一样

2.基本用法2

for 变量 in

例如

for os in windows linux macos

类似与我们java所用的增强for循环

还有一种用法for 变量 in{1…100}

也就是把变量值从1遍历到100

3.这里补充之前条件判断的一个知识点

比较 ∗ 和 *和 ∗和@区别

∗ 和 *和 ∗和@都表示传递给函数或脚本的所有参数

(1)不被双引号“”包含时,都以$1 2 … 2 … 2…n 的形式输出所有参数。

(2)当它们被双引号“”包含时,$*会将所有的参数作为一个整体,以“$1 2 … 2 … 2…n”的形式输 出所有参数;$@会将各个参数分开,以“$1” “ 2 ” … “ 2”…“ 2”…“n”的形式输出所有参数。

4.while循环

1.基本用法

while [ 条件判断式 ]

do

程序

done

2.Shell中的io流

1.输出流echo

可以输出到控制台,或者重定向符号>输出到其他文件

2.输入流read

基本语法

read (选项) (参数)

①选项: -p:指定读取值时的提示符;

​ -t:指定读取值时等待的时间(秒)如果-t 不加表示一直等待

②参数 变量:指定读取值的变量名

3.函数 1.系统函数

(1)basename

基本语法 basename [string / pathname] [suffix]

(功能描述:basename 命令会删掉所有的前 缀包括最后一个(‘/’)字符,然后将字符串显示出来。 basename 可以理解为取路径里的文件名称

选项: suffix 为后缀,如果 suffix 被指定了,basename 会将 pathname 或 string 中的 suffix 去掉

(2)dirname

基本语法 dirname 文件绝对路径

(功能描述:从给定的包含绝对路径的文件名中去除文件名 (非目录的部分),然后返回剩下的路径(目录的部分))

dirname 可以理解为取文件路径的绝对路径名称

2.自定义函数

1.基本语法

[ function ] funname[()]

{

Action;

[return int;]

}

其中function可以不写,return也可以不写

但是根据习惯还是写上,增强可读性

2.注意事项

1.我们的一个函数的return的值范围为0-255

2.类似于我们的命令我们可以通过$?来获取刚执行的函数的返回值

3.如果我们想要返回一个较大的值我们可以通过$()来命令替换然后得到这个函数echo到控制台的值来作为返回值

4.综合案例

题目:实际生产应用中,往往需要对重要数据进行归档备份。 需求:实现一个每天对指定目录归档备份的脚本,输入一个目录名称(末尾不带/), 将目录下所有文件按天归档保存,并将归档日期附加在归档文件名上,放在/root/archive 下。 这里用到了归档命令:tar 后面可以加上-c 选项表示归档,加上-z 选项表示同时进行压缩,得到的文件后缀名 为.tar.gz。

代码实现:

#!/bin/bash

#首先判断输入参数个数是否为 1

if [ $# -ne 1 ]

then

echo "参数个数错误!应该输入一个参数,作为归档目录名"

exit

fi

#从参数中获取目录名称

if [ -d $1 ]

then

echo

else

echo

echo "目录不存在!"

echo

exit

fi

DIR_NAME=$(basename $1)

DIR_PATH=$(cd $(dirname $1); pwd)

#当前日期

DATE=$(date +%y%m%d)

#定义生成的归档文件名称

FILE=archive_${DIR_NAME}_$DATE.tar.gz

DEST=/root/archive/$FILE

#开始归档目录文件

echo "开始归档..."

echo tar -czf $DEST $DIR_PATH/$DIR_NAME

if [ $? -eq 0 ]

then

echo

echo "归档成功!"

echo "归档文件为:$DEST"

echo

else

echo "归档出现问题!"

echo

fi

退出到我们bash窗口再设值crontab任务

crontab -l

先查看一下是否有定时任务

crontab -e

进入vim编辑器编辑定时任务

0 2 * * * /root/scripts/dayReturn.sh /root/scripts

每天的2点0分使用dayRetrun脚本传入的参数为/root/scripts(目录)

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1006096.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号