shell是一个命令解释器,为用户提供了一个向Linux内核发送请求以便运行程序的界面系统程序,可以用shell来启动、挂起、停止、编写一些程序。

快速入门

  • 脚本格式要求
  1. 脚本以#!/bin/bash开头
  2. 脚本需要有可执行权限
  • 编写一个shell脚本输出hello world
  1. 新建一个myShell.sh脚本
  2. 编辑脚本内容

  
  
   
  
  
![shell编程学习笔记教程](https://www.icode9.com/i/ll/?i=img_convert/7853e2f97493349b0c4a0e33019f6fae.png)
  1. 赋予脚本执行权限

  
  
   
  
  
![shell编程学习笔记教程](https://www.icode9.com/i/ll/?i=img_convert/4576716355c09d4cd9708772600ae10c.png)

  
  
   
  
  
![shell编程学习笔记教程](https://www.icode9.com/i/ll/?i=img_convert/7e068b148f946c425f5bad91bac0b5a4.png)
  • 脚本的常用执行方式
  1. 输入脚本的绝对路径或相对路径

  
  
   
  
  
![shell编程学习笔记教程](https://www.icode9.com/i/ll/?i=img_convert/8c5b77e0c7b2abd3411c611217223cca.png)
  1. sh+脚本


  
  
   
  
  
说明:这种方式可以不用赋予脚本可执行权限,直接运行即可

  
  
   
  
  
![shell编程学习笔记教程](https://www.icode9.com/i/ll/?i=img_convert/e525fe372165aad4a6e3c85db87673ce.png)




shell变量

shell变量分为,系统变量和用户自定义变量。系统变量: H O M E 、 HOME、 HOME、PWD、 S H E L L 、 SHELL、 SHELL、USER等。

系统变量

  • 输出系统变量

shell编程学习笔记教程

注:使用$引用变量

shell编程学习笔记教程

  • 显示shell中的所有变量:set

shell编程学习笔记教程

用户变量

  • 语法
  1. 定义变量:变量名=变量值
  2. 撤销变量:unset 变量
  3. 声明静态变量:readonly 变量。静态变量不能unset
  • 定义变量规则
  1. 变量名称可由字母、数字和下划线组成,数字不能开头
  2. 等号两侧不能由空格
  3. 变量名一般习惯为大写
  • 将命令的返回值赋值给变量
  1. A=ls -la 反引号,运行引号里面的命令,并将结果返回给变量A
  2. A=$(ls -la)
  • 案例一:声明用户变量

shell编程学习笔记教程

shell编程学习笔记教程

  • 案例二:静态变量不能unset

shell编程学习笔记教程

shell编程学习笔记教程

  • 案例三:引用命令运行结果

shell编程学习笔记教程

shell编程学习笔记教程

设置环境变量

  • 语法
  1. export 变量名=变量值(将shell变量输出为环境变量)
  2. source 配置文件(使修改后的配置文件生效)
  3. echo $变量名(查询环境变量的值)
  • 案例

shell编程学习笔记教程

shell编程学习笔记教程

位置参数变量

当执行shell脚本时,希望获取到命令行的参数,就可以使用位置参数变量。比如,./myShell.sh 100 200,这个shell命令,可以在shell脚本中获取到参数信息。
  • 语法

$n:n为数字,$0代表命令本身,$1- 9 代 表 第 一 到 第 九 个 参 数 , 第 十 个 以 上 的 参 数 , 需 要 用 大 括 号 包 含 , 如 9代表第一到第九个参数,第十个以上的参数,需要用大括号包含,如 9代表第一到第九个参数,第十个以上的参数,需要用大括号包含,如(10)

$*:代表命令中的所有参数,把所有参数看成一个整体

$@:代表命令中的所有参数,把每个参数区分对待

$#:代表命令中所有参数的个数

  • 案例

shell编程学习笔记教程

shell编程学习笔记教程

预定义变量

shell设计者事先已经定义好的变量,可以直接在shell脚本中使用
  • 语法

$$:表示当前进程的进程号(PID)

$!:表示后台运行的最后一个进程的进程号(PID)

$?:表示最后一次执行的命令的返回状态,0代表上一个命令正常执行,非0则代表上一个命令执行不正确

  • 案例

shell编程学习笔记教程

shell编程学习笔记教程

运算符

  • 语法
  1. ( ( 运 算 符 ) ) 或 ((运算符))或 ((运算符))或[运算符]
  2. expr m + n

  
  
   
  
  
注意:expr运算符间要有空格。
  1. expr /*,/,% 乘,除,取余,乘要“/”转义
  • 案例

shell编程学习笔记教程

shell编程学习笔记教程

条件判断

  • 基本语法

[ condition ] (注意condition前后又空格)

\#非空返回true,可使用$?验证(0-true,>1-false)

  • 判断语句
  1. 两个整数判断

  
  
   
  
  
=:字符串比较

  
  
   
  
  
-lt:小于

  
  
   
  
  
-le:小于等于

  
  
   
  
  
-eq:等于

  
  
   
  
  
-gt:大于

  
  
   
  
  
-ge:大于等于

  
  
   
  
  
-ne:不等于
  1. 按照文件权限判断

  
  
   
  
  
-r 文件:有读的权限

  
  
   
  
  
-w 文件:有写的权限

  
  
   
  
  
-x 文件:有执行权限
  1. 按照文件类型判断

  
  
   
  
  
-e 文件:判断文件是否存在

  
  
   
  
  
-d 文件:文件存在且是一个目录
  • 案例

shell编程学习笔记教程

shell编程学习笔记教程

流程控制

if

  • 语法形式1
if [ 条件判断 ];then
程序
fi
  • 语法形式2
if [ 条件判断 ]
then
程序
elif [ 条件判断 ]
then
程序
fi
  • 注意:[ 条件表达式 ],中括号和条件表达式之间必须有空格
  • 案例

shell编程学习笔记教程

shell编程学习笔记教程

case

  • 语法
case $变量名 in
"value1")
如果变量值等于value1则执行
;;
"value2")
如果变量值等于value1则执行
;;
*)
如果变量值都不等于以上的值,则执行此程序
;;
esac
  • 实例

shell编程学习笔记教程

shell编程学习笔记教程

for循环

  • 语法1
for 变量 in 值1 值2 值3 ...
do
程序
done
  • 语法2
for((初始值;循环控制条件;更新变量))
do
程序
done
  • 实例

shell编程学习笔记教程

shell编程学习笔记教程

shell编程学习笔记教程

shell编程学习笔记教程

while循环

  • 语法
while [ 条件表达式 ]
do
程序
done
  • 实例

shell编程学习笔记教程

shell编程学习笔记教程

read读取控制台输入

  • 语法

read [选项] [参数]

  • 选项
  
  
   
  
  
-p:指定读取时的提示符

  
  
   
  
  
-t:指定读取等待时间(秒),如果没有在指定时间内输入,就不再等待
  • 参数
  
  
   
  
  
变量:指定读取值的变量名
  • 实例

shell编程学习笔记教程

shell编程学习笔记教程

函数

shell既有系统函数,也可以自定义函数。

系统函数

  • basename
  • basename [path] [suffix] 功能:返回完整路径最后/的部分,常用于获取文件名
  • basename [string] [suffix] 功能:删掉所有的前缀包括最后一个“/”字符,然后将字符串显示出来

选项:suffix为后缀,如果suffix指定了,basename会将pathname或string中的suffix去掉。

  • 实例

shell编程学习笔记教程

  • dirname

dirname 文件绝对路径

功能:返回完整路径最后/的前面部分,常用于返回文件路劲

  • 实例

shell编程学习笔记教程

自定义函数

  • 语法
function funName()
{
    函数体;
    [return int;]
}

调用直接写函数名:funname[值]

  • 实例

shell编程学习笔记教程

shell编程学习笔记教程

]

  • dirname

dirname 文件绝对路径

功能:返回完整路径最后/的前面部分,常用于返回文件路劲

  • 实例

[外链图片转存中…(img-usOvTRhb-1612708535084)]

自定义函数

  • 语法
function funName()
{
    函数体;
    [return int;]
}

调用直接写函数名:funname[值]

  • 实例

shell编程学习笔记教程
shell编程学习笔记教程

标签: shell, 变量, 脚本, 笔记, 编程, 参数, 语法, 实例

相关文章推荐

添加新评论,含*的栏目为必填