版本记录
版本号 | 时间 |
---|---|
V1.0 | 2023.07.17 星期一 |
前言
Shell
脚本相信大家都用过,Shell 是一个用 C 语言编写的程序,它是用户使用Linux
的桥梁。Shell
既是一种命令语言,又是一种程序设计语言。Shell 脚本(shell script)
,是一种为 shell 编写的脚本程序。大家平时说的和用到的都是指的是shell脚本编程,不是指开发shell自身。这个模块我们就一起来看下shell脚本编程。
Shell环境
Shell
编程跟 JavaScript、php
编程一样,只要有一个能编写代码的文本编辑器和一个能解释执行的脚本解释器就可以了。
Linux 的 Shell 种类众多,常见的有:
Bourne Shell(/usr/bin/sh或/bin/sh)
Bourne Again Shell(/bin/bash)
C Shell(/usr/bin/csh)
K Shell(/usr/bin/ksh)
Shell for Root(/sbin/sh)
编写第一个Shell脚本
1. 创建脚本文件
我们先在桌面上新建一个文件夹,并命名为work
cd Desktop
mkdir work
然后在这个文件夹中,新建一个空白的shell脚本,可以用下面命令:
touch test.sh
这样一个新的空白的shell脚本文件就创建好了。
2. 编辑Shell脚本
下面我们就开始编辑Shell脚本了。
#!/bin/bash
echo "hello world!"
一共就2句代码,功能就是在控制台输出hello world!
代码说明
-
#!/bin/bash
这里的#!
是一个约定的标记,它告诉系统这个脚本需要什么解释器来执行,即使用哪一种Shell
。 -
echo
命令用于向窗口输出文本。
执行Shell脚本
下面我们看下执行Shell脚本的几个方法:
1. 作为可执行程序
我们cd到work文件夹,也就是test.sh脚本所在的目录,直接执行下面两个方法之一
chmod +x ./test.sh #使脚本具有执行权限
./test.sh #执行脚本
注意,一定要写成 ./test.sh,而不是 test.sh,运行其它二进制的程序也一样,直接写 test.sh,linux 系统会去 PATH 里寻找有没有叫 test.sh 的,而只有 /bin, /sbin, /usr/bin,/usr/sbin 等在 PATH 里,你的当前目录通常不在 PATH 里,所以写成 test.sh 是会找不到命令的,要用 ./test.sh 告诉系统说,就在当前目录找。
2. 作为解释器参数
这种运行方式是,直接运行解释器,其参数就是 shell 脚本的文件名,如:
/bin/sh test.sh
/bin/php test.php
这里/bin/sh
和/bin/php
都是解析器,后面的test.sh
和 test.php
是脚本文件名。
下面我们就实际操作,我们在终端中直接作为可执行程序执行脚本
./test.sh
会发现报错了
zsh: permission denied: ./test.sh
问题原因:用户没有权限,需要用
chmod
修改下权限
chmod u+x test.sh
然后我们接着执行./test.sh
,就会在控制台输出了hello world!
chmod是权限管理命令change the permissions mode of a file的缩写,u代表所有者,x代表执行权限,+表示增加权限
chmod u+x test.sh就表示对当前目录下的test.sh文件的所有者增加可执行权限。
后记
后面我们在很多场景,比如生成库或者执行CR等,都可以使用shell脚本,简化流程,提高效率。