在 Linux 中,有时候需要对多条命令进行组合才能完成一项任务,或者多个对象要使用同样一组命令,我们都希望采用一种便捷化的方式来执行,而不必在 shell 中一行一行地输入命令,此时就需要到 shell 脚本。
什么是 shell 脚本
与编程语言的源文件一样,shell 脚本只是将符合 shell 的语法和命令进行搭配,以达到处理某一项任务的目的。
此时可以将 shell 脚本看作是一种特殊编程语言的源文件,能够在 shell 中执行。
为什么要了解 shell 脚本
其实是有需要看懂 shell 脚本的需要,刚打开 .sh 文件的时候,真的是不能够特别理解。因此才想要了解一下,但其实利用 shell 脚本能够做到的事情有很多:
- 自动化管理
- 系统跟踪和管理
- 入侵检测
- 数据处理
- 组合命令
- 跨平台支持
其实 shell 脚本完全可以当作是一种编程语言来认识,只是 shell 脚本多用于系统管理上。因为 shell 脚本其实就是一个一个的命令,命令在逐行执行中,会占用系统资源,因此 shell 脚本在大规模数值运算上的性能就显得有点弱了。
shell 脚本的规则
一般情况下,shell 脚本和其它编程语言是类似的,都有一定的规则:
- 命令自上而下,自左向右执行
- 忽略多余的空格,tab 也被视为空格
- 忽略空白行
- 读取到换行符,就开始执行本行命令
- 命令过长可以用转义字符进行扩展
- 可以添加注释,符号为 #
之前提到过,Linux 中命令的执行顺序为:
- 以相对路径或者绝对路径执行命令,如之前提到的 /bin/ls
- 由命令别名找到对应命令并执行
- 由 bash 内置命令来执行
- 通过 ${PATH} 变量顺序查找并执行
这也就是说我们可以使用多种方法运行构建的 shell 脚本。
- 相对路径/绝对路径
- 命令别名
- bash shname/sh shname
- 将 shell 脚本路径添加到 ${PATH} 中
编程习惯
这个编程习惯说的就不单单是 shell 脚本的编程习惯了,而是所有的编程语言最好都有的一种书写习惯。
在编程的源文件中最好有:
- 功能描述
- 版本信息
- 作者和联系方式
- 版权声明
- History
- 特殊命令使用绝对路径
- 实现声明环境
- 对实现某一功能的代码块添加注释
- 良好的书写格式
当然有时候自己写的脚本不需要包含这么多的条目,但是为了程序的可读性,尽量要包含功能描述,书写格式和代码注释。
Hello world
这里我们编写名为 exp.sh 的 shell 脚本实现 “Hello world”:
# Description: using shell script to implement Hello world.
# Version: 1.0
# Author: wood
# Address: None
# Copyright: None
# History: None
PATH=${PATH}
export PATH
echo -e "Hello world"
exit 0
然后实现调用:
wood@ubuntu:/tmp/test$ ll
total 12
drwxrwxr-x 2 wood wood 4096 Apr 7 10:43 ./
drwxrwxrwt 14 root root 4096 Apr 7 10:45 ../
-rw-rw-r-- 1 wood wood 199 Apr 7 10:43 exp.sh
wood@ubuntu:/tmp/test$ chmod +100 exp.sh
wood@ubuntu:/tmp/test$ ll
total 12
drwxrwxr-x 2 wood wood 4096 Apr 7 10:43 ./
drwxrwxrwt 14 root root 4096 Apr 7 10:45 ../
-rwxrw-r-- 1 wood wood 199 Apr 7 10:43 exp.sh*
wood@ubuntu:/tmp/test$ ./exp.sh
Hello world
wood@ubuntu:/tmp/test$ bash exp.sh
Hello world
本文介绍Linux环境下Shell脚本的基础知识,包括Shell脚本的概念、作用、编写规则及常见用途,如自动化管理、数据处理和跨平台支持等。通过示例演示如何创建和执行一个简单的Hello World脚本。
33万+

被折叠的 条评论
为什么被折叠?



