什么是shell
shell是壳,壳对应的命令将该数据取出来,壳的目的是去操作核,就好比拿出手机想要打电话不能直接操作电路板一样,我们点击打电话的按键,就可以帮助我们完成打电话的功能。即装上壳子,使用专业的命令,就可以操纵内核。
介于系统内核与用户之间,负责解释命令行,Shell (壳程序)是一个特殊的应用程序,它介于操作系统内核与用户之间,充当了一个“命令解释器"的角色,负责接收用户输入的操作指令(命令)并进行解释,将需要执行的操作传递给内核执行,并输出执行结果。
当我们将程序语写在文件中,我们指向文件,读取其中的代码,这个程序文件就叫做shell脚本
脚本的第一行
第一行的东西叫shellbang, 脚本申明(解释器) :若第一行为“#!/bin/bash", 表示此行以下的代码语句是通过/bin/bash程序来解释执行,#!/bin/bash为默认解释器。还有其它类型的解释器,比如#!/usr/bin/python、#!/usr/bin/ expect(告诉电脑用哪个解释器去读)
注释信息:以“#”开头的语句表示为注释信息,被注释的语句在运行脚本时不会被执行。(shell脚本文件的第一行是个例外,#后面的感叹号会告诉shell用哪个shell来运行脚本) 可执行语句:比如echo命令,用于输出" "之间的字符串。
执行shell的形式
shell脚本的方式有三种:sh 文件;source 文件;绝对路径
脚本文件路径(绝对路径和相对路径),要求文件必须有 x(可执行)权限 chmod +x /root/first_demo.sh 指定绝对路径: /root/first_demo.sh 指定相对路径: ./first_demo.sh
sh脚本文件路径,不要求文件必须有 x (可执行)权限 sh first_demo.sh
source脚本文件路径,不要求文件必须有 x (可执行)权限(和第二的不同在于变量的作用域) source first_demo.sh 或者.source first_demo.sh
shell语法
shell语法(先学变量(变量里面有标识符和数据类型,再学运算符(让多个变量产生关系),在学习逻辑语句(顺序,分支,循环),再学习方法或函数,将实现某一功能的代码封装在一起)),这也是大部分语言学习的通用路径。
变量: 定义一个新的变量 变量名以字母数字或下划线开头,区分大小写,建议全大写;变量名=变量值;中间不能有空格,可以有下划线;不能使用标点;
查看变量的值 echo $变量名 • 双引号:允许通过$符号引用其他变量值
• 单引号:禁止引用其他变量值,$视为普通字符 #表示长度
数组
shell数组:是若干数据的集合,其中的每一份数据都称为元素 shell不限制数组的大小,理论上可以存放无限量的数据,shell数组元素的下标也是从0开始计数 获取数组中的元素要使用下标[ ],下标可以是一个整数,也可以是一个结果为整数的表达式;下标必须大于等于0
Bash shell只支持一维数组,不支持多维数组
数组的定义 shell中,用小括号( )来表示数组,数组元素之间用空格来分隔 array1=(1 2 3 4 5)
echo ${array1[*]} #输出定义数组的所有元素
echo ${array1[@]} #输出定义数组的所有元素
echo ${array1[0]} #输出定义数组的第一个元素
echo ${array1[1]} #输出定义数组的第二个元素
使用双括号进行算数运算 使用双括号可以进行算数运算,可以写类C语言的运算表达式 a++ 或者 b-- 或者 a+=1 或者 a<b 或者 a != b 4、
注意事项:
双括号结构中,变量名引用可以加$,也可以不加
运算符前后可以有空格,也可以没有
可以用于if、for、while等循环控制结构中
多个运算符使用逗号分隔