Linux shell编程语法

shell是什么

Linux shell编程语法
shell 是一个命令行接收器,它为Linux用户提供了一个向Linux内核发送请求以便运行程序的界面系统级程序,用户可以用 Shell 来启动,挂起,停止甚至是编写一些程序。

shell 变成快速入门 - shell 脚本的执行方式

脚本格式要求

  1. shell 脚本以 #!/bin/bash 开头
  2. 脚本需要有可执行权限

编写第一个shell脚本

  • 需求说明

    创建一个Shell脚本,输出 hello world!
    Linux shell编程语法
    Linux shell编程语法

脚本的执行方式

方式1(输入脚本的绝对路径和相对路径)

  1. 首先要给赋予脚本一个可执行权限
  2. 执行脚本
    Linux shell编程语法

方式2(sh + 脚本,不推荐)
1. 不用赋予脚本权限,直接执行即可
Linux shell编程语法

shell 变量

shell 变量介绍

  1. Linux Shell 中的变量分为,系统变量用户自定义变量
  2. 系统变量:$HOME,$PWD,$USER 等等

    如:输出系统变量 echo $HOME
    Linux shell编程语法
    输出结果:
    Linux shell编程语法

  3. 显示当前Linux中所有的变量:set
    Linux shell编程语法

shell 变量的定义

  • 基本语法
    1)定义变量:变量名=值
    2)撤销变量:unset 变量
    3)声明静态变量:readonly 变量=值,注意静态变量不能 unset

  • 案例入门
    1)案例1:定义变量A
    2)案例2:撤销变量A
    Linux shell编程语法
    Linux shell编程语法
    3)案例3:声明静态变量 B=2,不能unset
    Linux shell编程语法

    运行结果:报错不能撤销B,因为B是静态变量
    Linux shell编程语法

定义变量的规则

  1. 变量名可以右字母,数字和 下划线组成,但是不能以数字开头
  2. 等号的两侧不能有空格
  3. 变量名一般习惯大写

将Linux命令的返回值赋值给变量

基本语法:

  1. A=`Linux命令`
    如:A=` ls -al `(使用反引号括起来) 把 ls -al 执行的结果赋值给变量A
  2. A=$(命令)
    如:A=$(ls -al) 等价用于第一个,推荐使用

Linux shell编程语法
输出结果:
Linux shell编程语法

环境变量

基本语法

  1. export 变量名=变量值(功能描述:将shell 变量输出为环境变量)
  2. source 配置文件(功能描述:让修改后的配置信息立即生效)
  3. echo $变量名 (功能描述:查询环境变量的值)

Linux shell编程语法
使配置生效,并输出:
Linux shell编程语法

位置参数变量

介绍

Linux shell编程语法

基本语法

Linux shell编程语法

应用实例

案例:编写一个shell脚本 positionPara.sh,在脚本中获取到命令行参数信息
Linux shell编程语法
输出结果:
Linux shell编程语法

预定义环境变量($$$!$?

基本介绍

预定义环境变量就是shell 设计者事先已经定义好的变量,可以直接在shell中使用

基本语法

Linux shell编程语法

应用实例

在一个 shell 脚本中简单使用一下预定义变量
Linux shell编程语法
输出结果:
Linux shell编程语法

运算符

基本语法

  1. $((运算式)) 或者 $[运算式]

  2. expr m + n
    注意:expr 运算符间要有空格

  3. expr m - n

  4. expr *,/,% (乘,除,取模)

案例:

  • 案例1:计算(2+3)*4的值
    $((运算符))
    Linux shell编程语法
    Linux shell编程语法
    $[(2+3)*4] (推荐这种方式)
    Linux shell编程语法
    Linux shell编程语法
  • 案例2:请求出命令行两个参数的和
    Linux shell编程语法
    Linux shell编程语法

条件判断

基本语法

[ condition ] (注意 condition前后要有空格

常用的判断条件

  1. 两个整数的判断
    Linux shell编程语法
    Linux shell编程语法

  2. 按文件的权限进行判断
    Linux shell编程语法

  3. 按文件的类型进行判断
    Linux shell编程语法

应用案例

  1. 判断“ok” 是否等于ok
    Linux shell编程语法
    Linux shell编程语法
  2. 判断23是否大于等于22
    Linux shell编程语法
    Linux shell编程语法
  3. 判断 /root/install.log 文件是否存在
    Linux shell编程语法
    Linux shell编程语法
  4. 判断是否有对/root/install.log 文件是否有写的权限
    Linux shell编程语法
    Linux shell编程语法

流程控制

基本语法

第一种:
if [ 条件判断式 ];then
程序
fi

第二种:
if [ 条件判断式 ]
then
程序
fi

第三种:
if [ 条件判断式 ]
then
程序
elif [ 条件判断式 ]
then
程序
fi
注意事项:if [ 条件判断式 ]:中括号和if或者elif 和条件判断式之间必须有空格,推荐2,3种

应用案例

请编写一个 shell 程序,如果输入的参数大于等60,则输出“及格了”,如果小于60则输出“不及格”
Linux shell编程语法
Linux shell编程语法

case 语句

基本语法

case $变量名 in
“值1”)
程序…
;;
“值2”)
程序…
;;
… 其他分支省略…
*)
程序…
如果以上变量的值都不是则执行此程序
;;
esac

应用案例

当命令行参数 是1的时候输出“星期一”,是2时,就输出“星期 二”,其他情况就输出“other”
Linux shell编程语法
Linux shell编程语法

for 循环

基本语法1

for 变量i in 值1 值2 值3 …
do
程序
done

注意:该语法的意思是遍历 值1 值2 值3,把值1 值2 值3 分别赋值给变量i

  • 案例:打印命令行输入命令行参数
    注意区别$* 和 [email protected] 分别的意思
    Linux shell编程语法
    Linux shell编程语法

基本语法2

for (( 初始值;循环控制条件;变量变化 ))
do
程序
done

  • 案例:从1加到100的值输出显示
    Linux shell编程语法
    Linux shell编程语法

while 循环

基本语法

Linux shell编程语法

应用案例

从命令行输入一个数n,统计从 1+…+n的值是多少
Linux shell编程语法
Linux shell编程语法

read 读取控制台输入

基本语法:

read 选项 参数
选项:
Linux shell编程语法
参数:
变量:指定读取值的变量名

应用实例

  1. 读取控制台输入一个num值
  2. 读取控制台输入一个num值,等待10秒
    Linux shell编程语法
    Linux shell编程语法

函数

函数介绍

Linux shell编程语法

系统函数

basename

功能:返回完整路径最后 / 的部分,常用语获取文件名

basename [pathname] [suffix] (功能描述:显示文件名(不带目录))

选项:
Linux shell编程语法

案例1:请返回/home/aaa/test.txt 的“test.txt” 部分
案例2:请返回/home/aaa/test.txt 的“test” 部分
Linux shell编程语法

dirname

功能:返回完整路径最后 / 前面部分,常用与返回路径部分

dirname 文件的绝对路径 (功能描述:从给定的包含绝对路径的文件中返回文件的目录)

案例:请返回 /home/aaa/test.txt 的目录
Linux shell编程语法

自定义函数

基本语法:
function funname(){
程序…
[return 返回值]
}

调用直接写函数名,参数可选
funname [参数]

案例:计算两个输入参数的和
Linux shell编程语法
Linux shell编程语法