文档章节

Linux学习-什么是 Shell scripts

u
 uetucci
发布于 2017/09/12 15:23
字数 1039
阅读 12
收藏 0
点赞 0
评论 0

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

干嘛学习 shell scripts

如果你是想要玩清楚 Linux 的来龙去脉, 那么 shell script 就不可不知,为什么呢?因为:

  • 自动化管理的重要依据

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

  • 简单入侵侦测功能

  • 连续指令单一化

  • 简易的数据处理

  • 跨平台支持与学习历程较短

第一支 script 的撰写与执行

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

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

    • 绝对路径:使用 /home/dmtsai/shell.sh 来下达指令;
    • 相对路径:假设工作目录在 /home/dmtsai/ ,则使用 ./shell.sh 来执行
    • 变量“PATH”功能:将 shell.sh 放在 PATH 指定的目录内,例如: ~/bin/
  • 以 bash 程序来执行:通过“ bash shell.sh ”或“ sh shell.sh ”来执行

  • 撰写第一支 script

先写一支 script 给大家 瞧一瞧:

[dmtsai@study ~]$ mkdir bin; cd bin
[dmtsai@study bin]$ vim hello.sh
#!/bin/bash
# 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
echo -e "Hello World! \a \n"
exit 0

整个程序的撰写分成数段,大致是这样:

  1. 第一行#!/bin/bash在宣告这个script使用的shell名称:因为我们使用的是bash,所 以,必须要以“ #!/bin/bash ”来宣告这个文件内的语法使用 bash 的语法!那么当这个程 序被执行时,他就能够载入 bash 的相关环境配置文件 (一般来说就是 non-login shell 的 ~/.bashrc), 并且执行 bash 来使我们下面的指令能够执行。

  2. 程序内容的说明:整个script当中,除了第一行的“#!”是用来宣告shell的之外,其他的 # 都是“注解”用途! 所以上面的程序当中,第二行以下就是用来说明整个程序的基本数 据。一般来说, 建议你一定要养成说明该 script 的:1. 内容与功能; 2. 版本信息; 3. 作者与联络方式; 4. 创建日期;5. 历史纪录 等等。这将有助于未来程序的改写与 debug 呢!

  3. 主要环境变量的宣告:建议务必要将一些重要的环境变量设置好, 如此一来,则可 让我们这支程序在进行时,可以直接下达一些外部指令,而不必写绝对路径。

  4. 主要程序部分就将主要的程序写好即可!

  5. 执行成果告知(定义回传值)是否记得我们在第十章里面要讨论一个指令的执行成功与 否,可以使用 $? 这个变量来观察~ 那么我们也可以利用 exit 这个指令来让程序中断, 并且回传一个数值给系统。

撰写 shell script 的良好习惯创建

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

  • script 的功能;
  • script 的版本信息;
  • script 的作者与联络方式;
  • script 的版权宣告方式;
  • script 的 History (历史纪录);
  • script 内较特殊的指令,使用“绝对路径”的方式来下达;
  • script 运行时需要的环境变量预先宣告与设置。

© 著作权归作者所有

共有 人打赏支持
u
粉丝 0
博文 53
码字总数 103136
作品 0
深圳
程序员
新手学Linux,linux运维之初识shell

接触linux是在大二的时候,那时候迷上了嵌入式linux,把电脑换成了linux系统,学习linux基础知识,学习linux命令,学习shell,泡论坛,就这样慢慢的平时工作学习都可以使用linux系统完成了。...

长沙千锋 ⋅ 04/12 ⋅ 0

Shell脚本链接整理

学习 shell脚本之前的基础知识:http://www.92csz.com/study/linux/12.htm shell脚本全面学习:http://blog.chinaunix.net/uid-9078183-id-2436460.html Shell脚本编程的常识:http://www.cn......

智能小松鼠 ⋅ 2014/12/26 ⋅ 0

嵌入式Linux学习基础规划篇

嵌入式的学习是需要日积月累的,是通过一点一滴的积累才能成为大神。下面来介绍一下嵌入式linux学习基础规划,目标是达到适应嵌入式应用软件开发、嵌入式系统开发或嵌入式驱动开发的基本素质...

创客学院 ⋅ 04/10 ⋅ 0

Linux运维每日都在做什么工作?Linux运维学习

  Linux系统在互联网公司应用越来越多,也有不少的朋友愿意加入运维的行列中,那么,运维每天都做什么工作呢?   运维人员做事需遵循“简单、易用、高效”的原则。对于运维服务有3大宗旨:...

老男孩Linux培训 ⋅ 06/04 ⋅ 0

云计算学习大纲是什么?怎么学习云计算?

《2018×××Linux云计算架构师+Python运维开发课程》十大阶段的课程为由浅入深、循序渐进的完整课程体系,包括结合Linux的网络基础实战、Linux系统配置及服务深度解析、Shell脚本自动化运维...

长沙千锋 ⋅ 04/28 ⋅ 0

转 鸟哥學習 Shell Scripts

引用:     学习 Shell Scripts 如果您真的很想要走信息这条路,并且想要好好的管理好属于您的主机,那么,别说鸟哥不告诉您, Shell Scripts 真的是必须要学习的一项课题呢!基本上, sh...

红薯 ⋅ 2009/05/06 ⋅ 15

Linux系统安装网络配置及远程连接知识点小结

基础知识课后题 远程连接Linux服务器,需要Linux服务器开启sshd服务,那么sshd服务默认监听哪个端口?这个端口是否可以自定义呢 ?如果可以,如何自定义呢? 2.常用的远程连接Linux的终端工具...

蛋黄哥 ⋅ 2017/08/24 ⋅ 0

要不要听听小白学习Linux经验小谈

Linux系统近几年发展的很快,特别是随着安卓手机的普及,大数据、物联网、人工智能等科学技术的发展,Linux系统从几年前只有白帽、黑帽等系统高手才了解的情况下变成如今几乎全民皆知的地步,...

问题终结者 ⋅ 05/06 ⋅ 0

Linux如何开机自动运行脚本?Linux运维学习

Linux配置开机自启动执行脚本的方法有很多,这里分享两种方法,分别是修改/etc/rc.local方法和chkconfig管理设置的方法,均可实现Linux配置开机自启动执行脚本的功能! 设置test.sh为开机要启...

zhouzhou2018 ⋅ 05/16 ⋅ 0

写给想学Linux系统管理的人

昨天看的一篇帖子,很受启发,今天把它发上来,希望对我们都有所帮助,也希望可以为我们指点明路!(如果你连这篇文章看完的耐心都没有的话,那么我希望你还是不要学linux了) linux太难用了...

happy_teemo ⋅ 04/21 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

JAVA RMI

什么是JAVA RMI Java RMI (Remote Method Invocation) 远程方法调用,能够让客户端像使用本地调用一样调用服务端 Java 虚拟机中的对象方法。RMI 是面向对象语言领域对 RPC (Remote Proced...

saulc ⋅ 6分钟前 ⋅ 0

Linux系统工程狮养成记

如今的社会,随着时代的发展,出现了很多职业,像电子类,计算机类的专业,出现了各种各样的工程师,有算法工程师,java工程师,前端工程师,后台工程师,Linux工程师,运维工程师等等,不同...

linux-tao ⋅ 16分钟前 ⋅ 0

进入编辑模式 vim命令模式 vim实践

1.

oschina130111 ⋅ 17分钟前 ⋅ 0

mysql用户管理、常用sql语句、mysql数据库备份恢复

1. mysql用户管理 mysql默认有一个root超级管理员账户,实际工作环境中不可能每个人都用此root权限,防止误操作、误删除,可以给单独的用户进行授权。 Mysql创建用户以及授权: grant all on...

laoba ⋅ 17分钟前 ⋅ 0

类型后面三个点(String...)和数组(String[])的区别

类型后面三个点(String…),是从Java 5开始,Java语言对方法参数支持一种新写法,叫可变长度参数列表,其语法就是类型后跟…,表示此处接受的参数为0到多个Object类型的对象,或者是一个Obj...

流氓兔- ⋅ 23分钟前 ⋅ 0

JEPLUS表格组件之表格合并——JEPLUS软件快速开发平台

JEPLUS表格组件之表格合并 我们在列表配置时会遇见这样的一种情况,需要对个人的数据进行统一化,对一些数据进行归类,这样展示出来美观又直观,在这篇笔记中我来给大家介绍下如何配置出来专...

JEPLUS ⋅ 24分钟前 ⋅ 0

golang 并发中全局唯一操作

package main// go 携程共享 数据// 加锁解锁操作// 同步锁import ("sync""fmt")// 创建Once结构var once = sync.Once{}func computed(data *int, lock *sync.Mut...

304158 ⋅ 25分钟前 ⋅ 0

Mobx入门之二:asynchronous actions

这一节主要看mobx怎么实现asynchronous actions 1 要实现的demo功能 输入地名,查询天气,利用openweathermap api 2 思想 observable观察数据:location地点、temperature温度 observer响应式...

pengqinmm ⋅ 27分钟前 ⋅ 0

【2018.0620学习笔记】【linux高级知识 13.4-13.6】

13.4 mysql用户管理 13.5 常用sql语句 13.6 mysql数据库备份恢复

lgsxp ⋅ 49分钟前 ⋅ 0

Java强弱引用示例

package jdk;import java.lang.ref.PhantomReference;import java.lang.ref.ReferenceQueue;import java.lang.ref.SoftReference;import java.lang.ref.WeakReference;public ......

月下狼 ⋅ 54分钟前 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部