走近Linux世界Linux 人生苦短|我用Linux

写Shell脚本就这么简单,从0到1,开始写出第一个脚本

2019-06-06  本文已影响7人  zioer

学习每一门新的语言都要从基础开始,程序语言总是会给你提供一个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.

脚本执行过程

  1. 脚本第一行的#!/bin/bash的意思是告诉系统使用指定的shell解析器(/bin/bash)来执行此脚本文件,这个用法叫做sha-bang(#!) ,脚本会从第一行之后开始执行,同时会忽略注释。#!实际上是个双字节的幻数(magic number), 用来标识特定文件类型(file 命令就是读取幻数来识别文件类型的).
  2. 忽略井号开头的注释行,注释的使用方法: 使用井号(#) 注释当前行之后的内容,注意的是井号(#)只是单行注释符号。
  3. 执行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!

上一篇下一篇

猜你喜欢

热点阅读