(一)基础概念
1、什么是shell?
shell也是一种编程语言,只是比较古老。shell是由C语言开发出来的,是一种弱数据类型的脚本语言,无需声明变量类型,直接定义使用,默认的都是字符串类型。
对于linux操作系统内部应用而言,shell是最好的工具,因为linux底层命令都支持shell语句,以及结合grep、sed、awk进行的高级用法。
shell的作用是:
解释执行用户输入的命令或程序等
用户输入一条命令,shell就解释一条
键盘输入命令,linux给与响应的方式,称之为交互。
bash就是一个命令处理器,运行在文本窗口中,能执行用户直接输入的命令。
bash还能从文件中读取linux命令,称之为脚本。
bash支持通配符、管道、命令替换、条件判断等逻辑控制语句。
2、什么是shell脚本?
shell脚本是一个文件,这个文件里面是程序代码,比如是多条linux命令以及循环控制语句等。计算机执行这个文件,就是计算机读取这个文件中的代码,然后将这些linux命令一次执行完毕。计算机在执行shell脚本文件的时候是不需要交互的,就是非交互方式执行的,一旦代码有问题,出现交互,就表示没有一次执行完毕所有的语句,是执行半截卡住了,就得重新修改代码逻辑。
linux系统中常用 *.sh 脚本文件;通常用vim编辑;由linux命令、bash shell 指令、逻辑控制语句和注释信息组成。
shell脚本语言非常适合处理纯文本类型数据,如日志、配置文件、文本、网页文件。
3、shebang
shebang是指出现在文本文件的第一行前两个字符 #!
在unix系统中,程序会分析#!字符后面的内容,作为解释器的指令,比如:
以#!/bin/sh 开头的文件,程序在执行的时候会调用/bin/sh,也就是bash解释器
以#!/usr/bin/python 开头的文件,就代表指定python解释器去执行。
如果没有指定shebang,脚本执行的时候就默认用shell去解释脚本。
如果指定了shebang,脚本执行的时候,文件名就会作为参数传递给指定的解释器。
如果指定的解释器没有可执行权限,则会报:bad interpreter:permission denied.
如果脚本是一个不可执行文件,那么指定的解释器程序会被忽略,转而交给当前的shell去执行这个脚本。
如果脚本指定的解释器不存,则会报:bad interpreter:no such file or directory.
#!后面的解释程序的路径要写绝对路径,因为不会自动到path中自己寻找解释器的。
如果用户使用bash test.sh命令执行test.sh脚本的时候,#!一行将被忽略,优先使用用户指定的解释器。
4、简单示例
5、shell变量规则
定义变量的规则:
(1)变量和赋值之间不得有空格,因为在linux中空格一般是命令和参数之间加空格的,所以有空格就被识别为命令和参数的意思了,去找这个命令就会报错,没有这个命令。
(2)名称不得用关键字、不得以数字开头、不得用标点符号、严格区分大小写。只能包含字母、数字、下划线。
(2)变量类型
比如,变量age=18和a