linux 编写脚本示范,Linux-scripts-简单脚本和脚本的执行

9.Scripts

9.1什么是 Shell scripts

shell script 是利用 shell 的功能所写的一个『程序 (program)』,这个程序是使用纯文本文件,将一些 shell 的语法与指令(含外部指令)写在里面,搭配正规表示法、管线命令与数据流重导向等功能,以达到我们所想要的处理目的。

9.1.1干嘛学习 shell scripts

l自动化管理的重要依据

l追踪与管理系统的重要工作

l简单***检测功能

l连续指令单一化

l简易的数据处理

9.1.2第一支 script 的撰写与执行

在 shell script 的撰写中还需要用到底下的注意事项:

l指令的执行是从上而下、从左而右的分析与执行;

l指令、选项与参数间的多个空白都会被忽略掉;

l空白行也将被忽略掉,并且 [tab] 按键所推开的空白同样视为空格键;

l如果读取到一个 Enter 符号 (CR) ,就尝试开始执行该行 (或该串) 命令;

l至于如果一行的内容太多,则可以使用『 \[Enter] 』来延伸至下一行;

l『 # 』可做为批注!任何加在 # 后面的资料将全部被视为批注文字而被忽略!

1.撰写第一支 script

[root@localhost tmp]# vim hello.sh#编写脚本

#!/bin/bash           #指定执行脚本的shell

# Program:

#       This program shows "Hello World!" in your screen.

# History:

# 2015/07/16 VBird First release       #  #开头的为注释

PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin

export PATH          #定义PATH,属个人习惯

echo -e "Hello World! \a \n"       #输出hello world!

exit 0         #设置脚本返回值

[root@localhost tmp]# sh hello.sh#运行脚本

Hello World!

9.1.3撰写 shell script 的良好习惯建立

建议一定要养成良好的 script 撰写习惯,在每个 script 的文件头处记录好:

nscript 的功能;

nscript 的版本信息;

nscript 的作者与联络方式;

nscript 的版权宣告方式;

nscript 的 History (历史纪录);

nscript 内较特殊的指令,使用『绝对路径』的方式来下达;

nscript 运作时需要的环境变量预先宣告与设定。

9.2简单的 shell script 练习

9.2.1简单范例

1.对谈式脚本:变量内容由用户决定

[root@localhost tmp]#vim showname.sh

#!/bin/bash

read -p "Please input your first name: " firstname      # 提示使用者输入

read -p "Please input your last name:  " lastname       # 提示使用者输入

echo -e "\nYour full name is: ${firstname} ${lastname}" # 结果由屏幕输出

[root@localhost tmp]# sh  showname.sh

Please input your first name:liu

Please input your last name:  hua

Your full name is: liu hua

2.随日期变化:利用 date 进行档案的建立

[root@localhost tmp]#  vim 1.sh

#!/bin/bash

echo -e "I will use 'touch' command to create 3 files." # 纯粹显示信息

read -p "Please input your filename: " filename         # 提示使用者输入

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}"

[root@localhost tmp]# sh 1.sh

I will use 'touch' command to create 3 files.

Please input your filename: file

[root@localhost tmp]# ls

1.sh  file20200425  file20200426  file20200427  hello.sh

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

[root@localhost tmp]# vim 1.sh

#!/bin/bash

echo -e "You SHOULD input 2 numbers, I will multiplying them! \n"

read -p "first number:  " firstnu

read -p "second number: " secnu

total=$((${firstnu}*${secnu}))

echo -e "\nThe result of ${firstnu} x ${secnu} is ==> ${total}"

[root@localhost tmp]# sh 1.sh

You SHOULD input 2 numbers, I will multiplying them!

first number:  2

second number: 3

The result of 2 x 3 is ==> 6

9.2.2 script的执行方式差异 (source, sh script, ./script)

[root@localhost tmp]# cat showname.sh

#!/bin/bash

read -p "Please input your first name: " firstname

read -p "Please input your last name:  " lastname

echo -e "Your full name is: ${firstname} ${lastname}"

1.相对路径执行

[root@localhost tmp]# chmod a+x showname.sh  #先增加执行权限

[root@localhost tmp]# ./showname.sh    #相对路径执行

Please input your first name: liu

Please input your last name:  hua

Your full name is: liu hua

[root@localhost tmp]# echo $firstname $lastname

#父进程中没有这两个变量

2.绝对路径执行(也需要执行权限)

[root@localhost tmp]# /tmp/showname.sh

Please input your first name: liu

Please input your last name:  hua

Your full name is: liu hua

[root@localhost tmp]# echo $firstname $lastname

#父进程中没有这两个变量

#注:

l相对路径和绝对路径执行需要文件的执行权限

l脚本在子进程中执行,所以,父进程中没有$firstname $lastname两个变量

l直接执行showname.sh,可能会失败,因为当前目录可能不在PATH中

3.sh执行

[root@localhost tmp]# sh showname.sh

Please input your first name: liu

Please input your last name:  hua

Your full name is: liu hua

[root@localhost tmp]# echo $firstname $lastname

#脚本在子进程中执行,所以,父进程中没有$firstname $lastname两个变量

#sh执行不需要文件的执行权限

b4e2f7894c7dc4eb8cf9facced717e53.png4.source和.执行

[root@localhost tmp]# . showname.sh

Please input your first name: liu

Please input your last name:  hua

Your full name is: liu hua

[root@localhost tmp]# echo $firstname $lastname

liu hua

[root@localhost tmp]# source showname.sh

Please input your first name: liu

Please input your last name:  hua

Your full name is: liu hua

[root@localhost tmp]# echo $firstname $lastname

liu hua

#脚本在父进程中执行,所以,有$firstname $lastname两个变量

#不需要文件的执行权限

4c5b8734d47d9bc3ac509cdf81eb8490.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/296933.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

被质疑“在开源社区执行微软意愿”,.NET 基金会前董事为其提交的 PR 道歉并辞职...

编译|燕珊.NET基金会最近“不太平”。上周五,.NET 基金会执行董事 Claire Novotny 在其成员反对她对其中一个项目的干预后,为自身的行为道歉并宣布辞去职务。巧合的是一个多月前,董事会成员 Rodney Littles II 因与基金会的目标方…

hadoop扩充磁盘操作记录

记录cloudera扩充磁盘1、4台主机,每台主机增加一块2TB的硬盘2、首先简单说明步骤A、分区,挂载(挂载目录(名称,路径)要一致)B、在挂载的分区内,建立对应的文件夹,并授权C、…

单身两年以上是什么体验?

1 单身两年以上是什么体验?2 这群熊孩子,不当演员可惜了。。3 我要出去!我要见园长!我为幼儿园立过功!我为幼儿园卖过萌!4 当心!陷阱!!5 一位主人抓拍下了自家的柴犬宝宝…

wince导航_宁可用手机导航,也不用汽车导航?

很多车主朋友在开车的时候,比较青睐的是手机导航而不是汽车导航。笔者我也是一个车主,我在开车的时候也是比较青睐手机导航而不是汽车导航,我认为主要是有以下几个原因:车载导航的准确性没有手机导航的高。很多车载导航的地图是在…

功能导航设计器

本程序使用C#编写;此模块作用为让程序功能使用人员直观的知道程序功能模块的先后顺序和操作的先后顺序;原理为客户端通过设计器设置程序的功能流程;并保存的文件服务器上;在使用人员程序中可以直观的调出程序模块的图示&#xff1…

.Net Core with 微服务 - 使用 AgileDT 快速实现基于可靠消息的分布式事务

前面对于分布式事务也讲了好几篇了(可靠消息最终一致性分布式事务 - TCC分布式事务 - 2PC、3PChttps://github.com/kklldog/AgileDT 开源不易,大家多多 ✨✨✨回顾 前面一篇文章(可靠消息最终一致性 )我们详细介绍了基于可靠消息的分布式事务。为了更好的…

一位汉子的恋爱心得

1 每天早上起床的你。。2 喂,你怎么不理我!3 最新防撕家方法。。4 塑料姐妹花,离得远显脸小。。心疼左一!5 国外一位汉子的恋爱心得……6 当有人跟你说“追星有什么用,那些人也不认识你”。。你点的每个赞,…

放大器非线性失真研究装置_高效布里渊光纤放大器

来源:PTB新闻 主要适用于以下领域:精确的光频传输,例如用于光学时钟的远距离比较 双向放大器对于在长距离光纤链路上传输超稳定的光频必不可少,它们可以补偿光损耗,大约每100千米20 dB。由德国联邦物理技术研究院(PTB)…

利用“多说”制作留言板、评论系统

留言板和评论系统在网站建设中会经常用到,今天为大家介绍如何利用多说来为自己的网站制作留言板、评论系统!注意以下只是介绍一下简单的创建设置,更多功能大家可以自己去探索! 1、进入多说网站 http://duoshuo.com/ 并且登录。 2、…

CSS边界属性的负值

在CSS中,如果边界属性取值为负值的时候,元素之间的关系就会因此而变得复杂很多。 在垂直方向上,两个元素的边界仍然会重叠,但是此时一个为正值,一个为负值,最后的取值并不是取其中较大的正值,而…

linux切换到docker目录,Linux更改Docker运行根目录的方法

许多Linux用户在安装系统的时候,并没有分配/var分区,而在安装Docker后才发现,它的默认存放位置是在/var/lib/docker。因此导致了Docker在运行的很慢,那么要怎么解决这个问题呢?下面一起来看看解决的方法吧。解决方法:…

10岁高分考上大学,16岁读博的95后神童张炘炀,活成了他想要的样子吗?

全世界只有3.14 % 的人关注了爆炸吧知识开启学神模式走上人生巅峰指日可待时间过得真快,今年的暑假没几天就要结束了,刚参加完高考的孩子也将步入大学,开启人生的新一段旅程。 说起上大学,这让超模君想起了少年天才、神童张炘炀。…

带有控制按钮的图片滚动

上一次写了一个图片自动滚动功能,没有左右按钮控制的功能。今天花了点时间,写了一个带有左右按钮控制的图片滚动效果。所谓自动滚动,原理就是周期性的执行一个效果。在js中,通常是用setInterval这个函数来执行的,setIn…

Win11代言人官宣

微软宣布李现为中国市场的“微软零售全品牌大使”,代言全新 Windows 11、Surface 和 Microsoft 365 等产品。微软全新发布的 Windows 11 操作系统,简洁高效,带来耳目一新的视觉和使用体验全新升级的新一代 Surface Pro 8 惊艳上市&#xff0…

求余运算符

笔记摘自《极客学院》 求余运算(a % b)是计算b的多少倍刚刚好可以容入a,返回多出来的那部分(余数)。 注意:求余运算(%)在其他语言也叫取模运算。然而严格说来,我们看该运…

万箭齐发!COSCon' 21深圳分会场闪亮登场!

“ 点击蓝字 / 关注我们 ”| 作者:COSCon21 组委会| 编辑:钱奕| 设计:朱亿钦| 责编:沈于蓝01序言世界上最遥远的距离,不是生与死的距离,而是你在我对面办公楼,却不能一起嗨皮。辣么多个辗转反侧…

6部BBC “教材级” 地理纪录片,有生之年必看系列!

全世界只有3.14 % 的人关注了爆炸吧知识看BBC的纪录片,既可以追溯上下数千年的历史文化,也可以欣赏从宇宙到地心深处的奇妙境界,而及其超级精彩的画面即使定格,也是一幅摄影佳作。BBC纪录片题材广泛、制作精良,观看起来…

黑马c++32期_【每日一考】第40期:计提折旧

每天都有很多小伙伴来做会计实操每日一考实操君看到非常的欣慰,希望大家持续打卡学习请看今天的题▼▼▼单选题某企业的一辆运货卡车,其原价为600 000元,预计总行驶里程为500 000千米,预计报废时的净残值率为5%&#x…

C#提升性能的几点提示和技巧

C#性能提示和技巧在Raygun[1],我们是一群非常懂多种语言的开发人员。Raygun的各个部分使用不同的语言和框架编写-最好的工作方式。鉴于大量的C#和我们正在处理的数据的爆炸性增长,在不同的时间需要进行一些优化工作。大部分重大的…

电脑睡眠快捷键_电脑快速进入睡眠的快捷键是什么?

电脑快速进入睡眠的快捷键是什么?正常情况下需要点击电源再按睡眠,小编觉得有点麻烦,如果你想要进入睡眠状态能够像锁屏快捷键那样就好了,那么今天就教大家如何设置睡眠快捷键,让你的电脑快速进入睡眠状态。我们知道电…