文档章节

Linux学习-什么是 Shell scripts

u
 uetucci
发布于 2017/09/12 15:23
字数 1039
阅读 14
收藏 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
博文 65
码字总数 103136
作品 0
深圳
程序员
linux下shell脚本执行方法及exec和source命令

exec和source都属于bash内部命令(builtins commands),在bash下输入man exec或man source可以查看所有的内部命令信息。 bash shell的命令分为两类:外部命令和内部命令。外部命令是通过系统...

OscerSong
2013/03/09
0
0
linux shell中fork、source、exec的区别

exec和source都属于bash内部命令(builtins commands),在bash下输入man exec或man source可以查看所有的内部命令信息。 bash shell的命令分为两类:外部命令和内部命令。外部命令是通过系统...

zrer90
07/01
0
0
转 鸟哥學習 Shell Scripts

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

红薯
2009/05/06
3.7K
15
Linux 学习记录 四(Bash 和 Shell scirpt).

一、什么是 Shell? 狭义的shell指的是指令列方面的软件,包括基本的Linux操作窗口Bash等,广义的shell则包括 图形接口的软件,因为图形接口其实也可以操作各种驱动程序来呼叫核心进行工作。 ...

jmcui
2017/07/17
0
0
《鸟哥的Linux私房菜(第四版)》学习笔记

第十二章、学习Shell Scripts 12.3 善用判断式 12.4 条件判断式 12.4.2 利用case ... esac 判断 hello-3.sh

OSC_fly
07/30
0
0

没有更多内容

加载失败,请刷新页面

加载更多

oracle 安装 PL/SQL Developer连接64位Oracle免安装配置

PL/SQL Developer连接64位Oracle 在64位系统上安装64位的Oracle数据库,但是没有对应的64位PL/SQL Developer,此时就不能使用PL/SQL Developer来进行直接连接的,所以要想实现连接还得需要其...

PeakFang-BOK
21分钟前
2
0
裁员寒冬袭来,30岁还在CRUD的Java程序员,拿什么安身立命?

就在近日,智联招聘公布的数据更是侧面印证了很多公司“瘦身”的事实:“2018年第二季度,小微企业用人需求较第一季度平均下降26.6%”。 裁员大潮正滚滚向前,席卷各行各业! 你做好失业的准...

Java填坑之路
23分钟前
3
0
第一章:什么是SpringCloud

第一章:什么是SpringCloud 何为微服务 在了解 SpringCloud之前,我们先来大致了解下 微服务这个概念吧。 传统单体架构 单体架构在小微企业比较常见,典型代表就是一个应用、一个数据库、一个...

DemonsI
28分钟前
6
0
环境搭建之八-- node.js和npm

1.node.js官网下载64位二进制压缩包 node-v8.12.0-linux-x64.tar.xz 2.解压文件 2.1 xz格式文件为 tar格式 xz -d node-v8.12.0-linux-x64.tar.xz 此时文件已经转变为 node-v8.12.0-linux-x64...

imbiao
32分钟前
2
0
JVM调优浅谈

1.数据类型 java虚拟机中,数据类型可以分为两类:基本类型和引用类型。 基本类型的变量保存原始值,即:它代表的值就是数值本身,而引用类型的变量保存引用值。 “引用值”代表了某个对象的...

xtof
36分钟前
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部