linux shell脚本学习(1):shell脚本基本概念与操作
1.什么是shell脚本
linux系统中,shell脚本或称之为bash shell程序,通常是由vim编辑,由linux命令、bash shell指令、逻辑控制语句、注释信息组成的可执行文件
*linux中常以.sh后缀作为shell脚本的后缀。linux系统中文件乃至脚本的后缀并没有实际意义,只是一种区分文件的方式,脚本的类型是由其使用的编程语言决定的
在windows中批处理脚本通常是以.bat结尾
2.bash解释器
用户通过敲入的命令需要先通过解释器,才能翻译成操作系统能理解的指令。
bash解释器就是linux系统中常见的一种解释器。
可以通过命令:cat /etc/shells来查看系统内的shell解释器
3.shebang
3.1什么是shebang
shebang指的是出现在shell脚本第一行的前2个字符#!,unix系统的程序会分析shebang后的内容,以作为解释器的指令,例如:
(1)#!/bin/sh,程序会调用bash解释器。/bin/sh是/bin/bash的软链接,所以写/bin/bash也可以。
(2)#!/usr/bin/python,程序会调用Python解释器。yum就是使用Python开发的
(3)#!/usr/bin/env,是一种在不同平台上都能找到解释器的写法
3.2使用shebang的注意事项
(1)如果脚本内未指定shebang,则默认用当前shell去解释脚本,即$SHELL。可以通过命令查看$SHELL:
(2)如果#!指定的解释器没有可执行权限,则会报错:bad interpreter:Permission denied
(3)如果#!指定的解释器不存在,则会报错:bad interpreter:No such file or directory
(4)如果#!指定的解释器不是可执行文件,那么该解释器会被忽略,转由当前shell去执行该脚本
(5)#!的解释器必须写成绝对路径
(6)如果使用bash xxx.sh这样的命令来执行脚本,那么shebang的指定将被忽略,优先使用命令中的解释器
4.实现一个简单脚本的流程
使用vim编辑一个脚本,内容如下:
(1)不使用绝对路径:
要想执行这个脚本,直接把hello.sh当作命令来用是不可以的,因为它不在$PATH中:
(2)使用绝对路径:
直接使用绝对路径,也会因为权限问题报错:
这个错误可以通过修改权限来解决:
首先来看一下脚本的权限,可以看到是缺少x(可执行)权限的
通过chmod命令赋予其x权限,便可以执行:
(3)直接指定bash解释器来执行
不添加x权限也可以正常执行(脚本要写绝对路径):
(4)source或.