写Shell脚本就这么简单,从0到1,开始写出第一个脚本
学习每一门新的语言都要从基础开始,程序语言总是会给你提供一个
Hello world
入门示例。
Hello World
写shell脚本通常都是要解决某些问题或者完成某些功能的,因此我们先来看看第一个入门Shell脚本
以及如何运行它吧。
问题: 如何输出Hello world.
文本内容?
解决问题:
脚本hello.sh
的代码如下:
#!/bin/bash
echo "Hello world."
如何运行呢? 我们来看看下面的操作代码:
## 第一种执行方式
$ sh ./hello.sh
Hello world.
## 第二种执行方式
$ chmod +x ./hello.sh
$ ./hello.sh
Hello world.
脚本执行过程
- 脚本第一行的
#!/bin/bash
的意思是告诉系统使用指定的shell解析器(/bin/bash)
来执行此脚本文件,这个用法叫做sha-bang(#!)
,脚本会从第一行之后开始执行,同时会忽略注释。#!
实际上是个双字节的幻数(magic number), 用来标识特定文件类型(file
命令就是读取幻数来识别文件类型的). - 忽略井号开头的注释行,注释的使用方法: 使用井号(#) 注释当前行之后的内容,注意的是井号(#)只是单行注释符号。
- 执行
echo
命令,输出显示文本"Hello world." : echo 命令用于显示一行文本内容。
这个脚本只是一个简单的例子,通过它可以了解如何执行脚本文件。
第一种执行方式是在 hello.sh
脚本文件没有可执行权限时的调用方法,我们可以通过第二种方法中的chmod
命令给hello.sh
脚本添加可执行权限,这样就可以直接调用了。
这里面可以注意到在hello.sh
脚本前使用 了./
, 为什么呢?
答案是这样的:
我们在终端 Terminal
下执行命令时其实会使用一个的搜索路径环境变量PATH
,默认情况下 PATH
变量设置的路径很少(/bin:/usr/sbin:/sbin
),也就是我们调用的命令会在这几个路径下寻找,例如ls
的路径是/bin/ls
, 如果我们调用的命令不在PATH
中,就需要指定具体的路径才可以(相对路径或者绝对路径)找到它。
PATH 环境变量
是搜索命令的路径。它是一个冒号分割的目录列表,搜索顺序是从第一个路径开始搜索直到找到了就执行这个命令,如果我们设置的路径列表中有两个路径包含 hello.sh
脚本命令,那么执行的永远是最前面的那个路径下的,这是要注意的,因为有可能你要执行的很可能是后面路径下的那个版本。
我们可以在那里找到关于
PATH
环境变量的介绍呢? 执行man bash
命令可以获取到所有环境变量含义的介绍。
绝对路径
就顾名思义了,绝对路径以根路径/
开头,例如,我们需要执行 /home/zioer/work/bin/hello.sh
脚本:
$ sh /home/zioer/work/bin/hello.sh
Hello world.
相对路径
是相对于我们当前的位置的路径,同上面的例子一样,我们的执行方法是:
## 显示我们当前的路径位置
$ pwd
/home/zioer/work
$ ./bin/hello.sh
Hello world.
总结
这一节介绍了第一个脚本hello.sh
,用来展示我们执行脚本的方法。
同时,也介绍了关于PATH
环境变量的作用,我们通常执行命令时是如何借助这个变量找到其路径的。
最后,介绍了一下绝对路径和相对路径的含义,如果我们对linux系统的文件系统结构了解的话,这个概念就非常容易理解了。
第一个脚本的确简单的不能再简单了, 但是,最好的学习方法就是去实践,动起手来,开始编写你的第一个脚本吧。
Enjoy!