linux-运维进阶-09 编写Shell脚本
可以将Shell终端解释器当作人与计算机硬件之间的“翻译官”,它作为用户与Linux系统内部的通信媒介,除了能够支持各种变量与参数外,还提供了诸如循环、分支等高级编程语言才有的控制结构特性。
- 交互式(Interactive):用户每输入一条命令就立即执行。
- 批处理(Batch):由用户事先编写好一个完整的Shell脚本,Shell会一次性执行脚本中诸多的命令。
指定解释器
脚本的第一行
用于指定脚本使用哪个shell程序做为脚本中命令的解释器
使用bash做为脚本命令的解释器
#!/bin/bash
使用zsh做为脚本的命令解释器
#!/bin/zsh
创建一个脚本
[root@localhost ~]# vim hello.sh
里面输入:
#!/bin/bash
echo "helloworld"
保存退出
执行一个脚本
[root@localhost ~]# ./hello.sh
-bash: ./hello.sh: Permission denied #发现你的权限不够
[root@localhost ~]#
添加执行权限
脚本写完后运行,利用./执行发现权限不够。Linux文件创建之后默认是没有可执行权限的,可以用chmod给文件或目录添加上可执行权限
[root@localhost ~]# ll
[root@localhost ~]# chmod +x hello.sh
[root@localhost ~]# ll
[root@localhost ~]# ./hello.sh
helloworld
[root@localhost ~]#
上面两次ll出来的文件列表,是为了对比出添加权限前后文件权限的变化,x表示可执行。
没有执行权限情况下想要执行脚本的两种方式
首先咱们在新建一个脚本
[root@localhost ~]# vim aaa.sh
里面输入:
#!/bin/bash
echo "hello aaa"
保存退出
验证它无权限被执行
[root@localhost ~]# ./aaa.sh
-bash: ./aaa.sh: Permission denied
解释器后面跟上脚本
[root@localhost ~]# bash aaa.sh
hello aaa
点加空格后面跟上脚本或者脚本的全路径
[root@localhost ~]# . aaa.sh
hello aaa
Shell脚本执行的几种方法
在脚本拥有可执行权限之后,我们就可以去执行脚本,执行脚本有以下几种方式:
在脚本所在目录下时
[root@localhost ~]# ./hello.sh
helloworld
[root@localhost ~]# . hello.sh
helloworld
[root@localhost ~]# bash hell