Linux自动管理系统的工具 Shell Scripts (学习笔记)

一、shell scripts 的作用:

  1. 自动化管理的重要依据。可以自动化管理主机,对主机进行分析和处理。
  2. 追踪与管理系统的重要工作。在CentOS 7 系统中还是有很多的个别服务在管理他们的服务启动方面,还是使用 shell script 的机制。
  3. 简单入侵侦测功能。比如,我们可以通过 shell script 去分析“当该封包尝试几次还 是连线失败之后,就予以抵挡住该 IP”之类的举动。
  4. 连续指令单一化。简单来说,如果不考虑 program 的部分,那么 scripts 也可以想成“仅是帮我们把一大串的指令汇整在一个文件里面, 而直接执行该文件就可 以执行那一串又臭又长的指令段!
  5. 简单的数据处理。可以用 shell script 直 接处理数据数据的比对啊, 文字数据的处理啊等等的,撰写方便,速度又快(因为在 Linux 性能较佳)。
  6. 跨平台支持与学习历程较短。几乎所有的 Unix Like 上面都可以跑 shell script ,连 MS Windows 系列也有相关的 script 仿 真器可以用, 此外, shell script 的语法是相当友好的。

二、script的撰写和执行。

  • script撰写中的注意事项:
  1. 指令的执行是从上而下、从左而右的分析与执行;
  2. 指令、选项与参数间的多个空白都会被忽略掉; 
  3. 空白行也将被忽略掉,并且 [tab] 按键所推开的空白同样视为空白键;
  4. 如果读取到一个 Enter 符号 (CR) ,就尝试开始执行该行 (或该串) 命令;
  5. 至于如果一行的内容太多,则可以使用“ [Enter] ”来延伸至下一行;
  6. “ # ”可做为注解!任何加在 # 后面的数据将全部被视为注解文字而被忽略!
  • script执行的几种方式:
  1. 直接指令下达: shell.sh 文件必须要具备可读与可执行 (rx) 的权限,然后:

绝对路径:使用 /home/dmtsai/shell.sh 来下达指令;

相对路径:假设工作目录在 /home/dmtsai/ ,则使用 ./shell.sh 来执行

变量“PATH”功能:将 shell.sh 放在 PATH 指定的目录内,例如: ~/bin/

        2.以 bash 程序来执行:通过“ bash shell.sh ”或“ sh shell.sh ”来执行。

1、script的入门,输出‘Hello World!'

代码:

[root@localhost bin]# cat hello.sh 
#!/bin/bash
#Program:
#    This program shows "Hello word!" in your screen.
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
echo -e 'Hello World! \a \n'
exit 0
解释:

  1. 第一行 #!/bin/bash 在宣告这个 script 使用的 shell 名称。
  2. 程序内容的说明:整个 script 当中,除了第一行的“ #! ”是用来宣告 shell 的之外,其他的 # 都是“注解”用途。
  3. 主要环境变量的宣告:建议务必要将一些重要的环境变量设置好。PATH 与 LANG (如果有使用到输出相关的信息时) 是当中最重要的! 如此一来,则可 让我们这支程序在进行时,可以直接下达一些外部指令,而不必写绝对路径。
  4. 主要程序部分: 就将主要的程序写好即可!在这个例子当中,就是 echo 那一行
  5. 执行成果告知 (定义回传值):在我们这个例子当中,使用 exit 0 ,这代表离开 script 并且回传一个 0 给系统, 所以我执行完这个 script 后,若接着下达 echo $? 则可得到 0 的值。

执行:

 三、简单的 shell script 练习

1、对谈式脚本:变量内容由使用者决定

        以 read 指令的 用途,撰写一个 script ,他可以让使用者输入:1. first name 与 2. last name, 最后并且在屏 幕上显示:“Your full name is: ”的内容:

  • 脚本代码:

[root@localhost bin]# cat showname.sh 
#!/bin/bash
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH

read -p "Please input your first name:" firstname
read -p "Please input your last name:" lastname
echo -e "\nYour full name is: ${firstname}${lastname}"

  • 执行结果

2、 随日期变化:利用 date 进行文件的创建

        假设我想要创建三个空的文件 (通过 touch),文件名最开头由使用者输入决定,假设使用者输入 filename 好了,那今天的日期是 2023/08/10 , 我想要以前天、昨天、今天的日期来创建这些文件,亦即 filename_20230808, filename_20230809, filename_20230810。

  • 脚本

[root@localhost bin]# vim create_3_filename.sh 

#!/bin/bash
#创建三个空文件
PATH=/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:~/bin
export PATH

#让使用者输入文件名称,并取得 fileuser 这个变量。
echo -e "I will use 'touch' command to create 3 files."
read -p "Please input your filename:" fileuser

#避免使用者随意按Enter键,导致只有日期没文件名,设置一个默认文件名 'filename'。
filename=${fileuser:-"filename"}

#开始利用date指令来取得所需要的文件名了。
date1=$(date --date='2 days ago' +%Y%m%d)
date2=$(date --date='1 days ago' +%Y%m%d)
date3=$(date +%Y%m%d)
file1=${filename}${date1}
file2=${filename}${date2}
file3=${filename}${date3}

#将文件名创建。
touch "${file1}"
touch "${file2}"
touch "${file3}"

  • 执行结果:

 3、数值运算:简单的加减乘除

        那我们来玩玩看,如果我们要 使用者输入两个变量, 然后将两个变量的内容相乘,最后输出相乘的结果。

  • 脚本

[root@localhost bin]# cat multiplying.sh 
#!/bin/bash
PATH=/usr/local/bin:/usr/local/sbin:/us

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值