Shell基础知识10分钟入门篇(2)

  shell 还是一种功能强大的解释型编程语言,使用 shell 来执行 shell 程序,这些程序通常被称为脚本,它们是在运行时解释执行的。这使得调试工作比较容易进行,因为你可以逐行的执行指令,而且节省了重新编译的时间。然而,这也使得 shell 不适合用来完成时间紧迫型和处理器忙碌型的任务。shell 非常适合于编写一些执行相对简单的任务的小工具,它们更强调的是易于配置、易于维护和可移植性,而不是很看重执行的效率。

二、解释型语言与编译型语言

2.1  解释型语言

  解释型语言的源代码不是直接翻译成机器语言的,而是先翻译成中间代码,再由解释器对中间代码进行解释运行(解释器一般是用编译型语言编写的程序)。解释型语言编写的程序不需要编译,程序在运行时才翻译成机器语言,每执行一次都要翻译一次,因此效率较低,依赖于解释器。但是,也正是由于解释的特性,使得这种语言编写的程序可移植性很好,只要有相应的解释环境,就可以在不同的操作系统上运行。常见的解释型语言有 Shell、Python、Ruby等。

2.2 编译型语言

  编译型语言在执行之前需要先进行编译,将程序直接编译成机器语言,然后直接运行即可,不需要再进行翻译。这种程序执行效率高,依赖于编译器,跨平台性要弱一点。常见的 C、C++等都是编译型语言。

三、为什么要使用 shell 脚本

1)简单性

  shell 脚本可以很简单的对文件、目录层次的内容进行操作,使用 shell 脚本将使得许多事情变得十分简洁;

2)可移植性

  shell 脚本的可移植性非常好,因为它是遵循 POSIX 标准的,基本上无需修改就可以在不同的系统上执行;

3)易于开发

  shell 脚本易于开发,你可以在一个较短时间内完成一个功能强大又好用的脚本。

四、如何编写一个 shell 脚本

4.1 先从最简单的 shell 脚本说起

  假如我想要使用 shell 脚本在终端打印一串字符:Hello world! 可以这样编写 shell 脚本:

#!/bin/bash

# 这是一个 shell 脚本,脚本将打印 Hello world! 这个字符串
echo Hello world!
exit 0

  将文件保存为 hello.sh 后退出,这就是一个简单的 shell 脚本了。虽然 Linux 中并不依靠后缀名来识别文件,但是最好还是加上一个 .sh 的后缀,以方便用户识别这是一个 shell 脚本。

  在 shell 脚本中,# 符号表示这一行接下来的语句是注释。注意,第一行中的 #!/bin/bash 是一个特殊形式的注释, #! 告诉系统同一行上紧跟在它后面的那个参数是用来执行本文件的程序。在这里,这一句的作用是告诉系统这个文件是一个 shell 脚本,默认 shell 是 /bin/bash。shell 脚本都是以这个语句作为开始的。

  由于脚本程序本质上被看作是 shell 的标准输入,所以它可以包含任何能够通过你的 PATH 环境变量引用到的 Linux 命令。因此,在该脚本中,直接使用 echo 命令来打印一串字符。由于能够直接在脚本中使用 Linux 命令,因此许多操作将会变得简单易行,这也是为什么 shell 脚本易于开发。

  exit 命令的作用是确保脚本程序能够返回一个有意义的退出码,这个以后再详细说明。

4.2 执行一个 shell 脚本

  在上一节,我们编写了一个简单的 shell 脚本,现在来尝试运行这个脚本。运行一个脚本很简单,只需要在该脚本所在目录下从命令行输入:

./shell脚本名

  这样就能执行脚本了。使用 ./ 是为了把 shell 脚本所在相对路径告诉 shell,以便 shell 根据路径找到脚本。当然,使用绝对路径也是可以的。

  但是,按照上述方法在命令行输入指令后,发现脚本并没有被执行。这是因为刚新建好的脚本还不具有可执行权限:

[linuxmi@localhost ~/Shell_Program]$ ls -l | grep hello.sh
-rw-rw-r-- 1 linuxmi tongye    38 Sep 26 15:03 hello.sh

  使用 ls -l 命令查看脚本文件的属性,可以发现该脚本是没用可执行权限的,我们可以使用 chmod 指令来给文件赋予可执行权限:

[linuxmi@localhost ~/Shell_Program]$ chmod +x hello.sh
[linuxmi@localhost ~/Shell_Program]$ ls -l | grep hello.sh
-rwxrwxr-x 1 linuxmi tongye    38 Sep 26 15:03 hello.sh

  再次查看,发现文件有了可执行权限,然后再执行脚本文件,即可得到想要的结果:

[linuxmi@localhost ~/Shell_Program]$ ./hello.sh
Hello world!

Linux公社的RSS地址https://www.linuxidc.com/rssFeed.aspx

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/12456.html