Linux 中的 shell 脚本

本文介绍Linux环境下Shell脚本的基础知识,包括Shell脚本的概念、作用、编写规则及常见用途,如自动化管理、数据处理和跨平台支持等。通过示例演示如何创建和执行一个简单的Hello World脚本。

在 Linux 中,有时候需要对多条命令进行组合才能完成一项任务,或者多个对象要使用同样一组命令,我们都希望采用一种便捷化的方式来执行,而不必在 shell 中一行一行地输入命令,此时就需要到 shell 脚本。

什么是 shell 脚本

与编程语言的源文件一样,shell 脚本只是将符合 shell 的语法和命令进行搭配,以达到处理某一项任务的目的。

此时可以将 shell 脚本看作是一种特殊编程语言的源文件,能够在 shell 中执行。

为什么要了解 shell 脚本

其实是有需要看懂 shell 脚本的需要,刚打开 .sh 文件的时候,真的是不能够特别理解。因此才想要了解一下,但其实利用 shell 脚本能够做到的事情有很多:

  • 自动化管理
  • 系统跟踪和管理
  • 入侵检测
  • 数据处理
  • 组合命令
  • 跨平台支持

其实 shell 脚本完全可以当作是一种编程语言来认识,只是 shell 脚本多用于系统管理上。因为 shell 脚本其实就是一个一个的命令,命令在逐行执行中,会占用系统资源,因此 shell 脚本在大规模数值运算上的性能就显得有点弱了。

shell 脚本的规则

一般情况下,shell 脚本和其它编程语言是类似的,都有一定的规则:

  • 命令自上而下,自左向右执行
  • 忽略多余的空格,tab 也被视为空格
  • 忽略空白行
  • 读取到换行符,就开始执行本行命令
  • 命令过长可以用转义字符进行扩展
  • 可以添加注释,符号为 #

之前提到过,Linux 中命令的执行顺序为:

  1. 以相对路径或者绝对路径执行命令,如之前提到的 /bin/ls
  2. 由命令别名找到对应命令并执行
  3. 由 bash 内置命令来执行
  4. 通过 ${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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值