平时多多少少都会接触linux,确不知道如何去写shell script,因此想用一周的时间系统学习一下shell script怎么写?
所有的代码学习都是用向世界问好的"Hello World"开始的,那么我们的shell script也从这里开始。
1、第一行#bin/bash声明这个script使用的shell名称
因为我们所用的shell为bash,所以必须要以“#bin/bash”来声明这个文件内的语法使用bash,那么当程序执行时,它就能够加载bash的相关环境配置文件,在很多情况下,如果没有设置这一行,那么该程序很可能无法执行,因为系统无法判断程序需要使用什么shell来执行。
2、程序内容的说明
整个程序中,除了第一行的“#!”是用来声明shell的之外,其他的“#”都是“批注”的用途,使用批注是编写程序是一个需要养成的习惯,批注应包括作者,日期,程序实现的功能以及每次所做的改动项等,这样有助于以后对程序的维护。
3、主要程序部分
本程序的主要程序部分就是echo那一行,用于打印“Hello World”
4、告知程序的执行结果
在linux中,判断一条语句是否执行成功,可以用$?这个变量来查看。在这个程序当中,我们也同样用了一个exit命令来让程序中断,并且回传一个数值给系统,exit0代表程序结束并传回一个0给系统,所以当我们执行完这个script,紧接着执行echo $?,就会得到0的结果
5、关于程序的执行
a、我们可以直接在当前目录下使用sh sh01.sh来执行。(sh01为文件名)
b、由于脚本写完后没有执行权限,故可以用chmod +x sh01.sh赋予可执行权限,再用绝对路径或相对路径./sh01.sh来执行。
d、使用source sh01.sh的方式来执行,这里说下用source执行和用前三种方式执行的区别,用source执行不会创建子进程,即在script中创建的变量等会在bash中生效,而前三种执行方式都会在bash中创建子进程,那么创建的变量以及执行的语句都只会在script中生效,这个我们可以用python中的全局变量和局部变量的方式去理解,即前三种执行方式相当于函数中的局部变量,只在当前函数中生效,而source执行方式相当于全局变量,在整个程序中都生效。