一、Shell简介
Shell它是一个用C语言编写的一个程序,它是用户使用Linux系统的桥梁。它即是一种命令语言,又是一种程序设计语言。
Shell指的是一种应用程序,而这个应用程序提供了一个界面,用户可以通过这个界面访问操作系统中内核的服务。
二、Shell脚本
Shell脚本(Shell Script),它是一种为shell编写的脚本程序。大家所说的shell通常是指shell脚本,由于叫法习惯的原因,本文中出现的“Shell编程”都是指shell脚本编程,不是指开发shell本身。
三、Shell环境介绍
Shell编程跟Java、Python编程一样,只要有一个能编写代码的文本编辑器和一个能解析执行的脚本解析器就可以了。
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)
本文中关注的是Bash,也是就是Bourne Again Shell,由于它简单易学和免费的原因,Bash在日常工作中被广泛应用。
同时,Bash也是大多数Linux操作系统默认的Shell。
在一般情况下,大家在用时并不区分 Bourne Shell 和 Bourne Again Shell,所以 #!/bin/sh,它同样也可以改为 #!/bin/bash。
#! 是告诉系统其后面路径所指定的程序,即是解释此脚本文件的 Shell程序。
四、第一个Shell脚本
打开文本编辑器,可以使用vi/vim命令来创建文件,新建一个test.sh,扩展名是sh(sh代表的是shell),扩展名并不影响其脚本的执行,望文知意就好。如下写法:
#!/bin/bashecho"hello world!"
#! 是一个约定的标记,是告诉操作系统这个脚本需要什么解析器来执行,即使用哪一种 Shell。echo 命令用于输出文本内容。
五、运行shell脚本
运行shell脚本有2种方法:
1、作为可执行程序去执行
先将第四小节创建的test.sh文件,添加可执行权限后,再执行test.sh。如下所示:
[root@centos7 ~]# chmod +x test.sh[root@centos7 ~]# ./test.shhello world!
执行时要用./test.sh,而不是test.sh,直接写test.sh运行时,Linux系统会去PATH(环境变量)里寻找有没有叫test.sh的,运行的当前目录通常不在PATH里,所以写成test.sh会提示找不到命令,并还会报错。如下报错所示:
[root@centos7 ~]# test.shbash:test.sh: 未找到命令...
2、以解析器的方式去执行
这种运行方式是,直接运行解析器,后面的参数是shell脚本的文件名。如下图所示:
[root@centos7 ~]# bash test.shhello world![root@centos7 ~]# /bin/bash test.shhello world!
用这种方式去执行的话,脚本内容中的第一行不一定要指定解析器信息。不指定也是可以执行的,因为执行时,已经用该解析器进行执行了。如下所示
[root@centos7 ~]# cat test1.shecho"hello world!"[root@centos7 ~]# bash test1.shhello world!