shell编程教程(shell编程实战)

shell编程教程(shell编程实战)欢迎关注 Android 茶话会 回 学习之路 取 Android 技术路线经典电子书 回 pdf 取阿里 amp 字节经典面试题 Android 算法 Java 等系列武功秘籍 回 天涯 取天涯论坛 200 精彩博文 包括小说 玄学等 Shell 是一种命令行解释器 它是在 Unix 和 Linux 操作系统中广泛使用的一种工具 也是我们日常开发工作中的好帮手 相较于 Python

大家好,我是讯享网,很高兴认识大家。



欢迎关注 「Android茶话会」

  1. 「学习之路」 取Android技术路线经典电子书
  2. 「pdf」 取阿里&字节经典面试题、Android、算法、Java等系列武功秘籍。
  3. 「天涯」 取天涯论坛200+精彩博文,包括小说、玄学等

Shell是一种命令行解释器,它是在Unix和Linux操作系统中广泛使用的一种工具,也是我们日常开发工作中的好帮手,相较于Python,Shell语法简单非常好上手而且开箱即用无需纠结安装Python2还是Python3。下面将从 入门到实践详细介绍下Shell编程

本篇是入门篇

大纲图如下:


讯享网

  • ${变量名#匹配规则} 从变量开头进行规则匹配,将符合最短的数据删除。
  • ${变量名匹配规则} 从变量开头进行规则匹配,将符合最长的数据删除。
  • ${变量名%匹配规则} 从变量尾部进行规则匹配,将符合最短的数据删除。
  • ${变量名%%匹配规则} 从变量尾部进行规则匹配,将符合最长的数据删除。
  • ${变量名/旧字符串/新字符串} 变量内容符合旧字符串,则第一个旧字符串会被新字符串取代。
  • ${变量名//旧字符串/新字符串} 变量内容符合旧字符串,则全部旧字符串会被新字符串取代。
 

讯享网
  • ${string:position} 从string的 position 开始。
  • ${string:position:length} 从position开始,匹配长度为 length
  • ${string: -position} 从右边开始匹配。
  • ${string:(position)} 从左边开始匹配。
  • expr substr $string $postion $length 从 position 开始,匹配长度为 length
讯享网
  • expr index$substring 从1开始计算索引位置
 
  • expr match $string substr

从头开始匹配子串长度,如果没有匹配到则返回0,匹配到了返回匹配子串的长度

讯享网
 
讯享网
 
讯享网
 
讯享网
 
  • 函数名后面的圆括号不加任何参数
  • 函数的完整定义必须置于函数的调用之前
讯享网
 
讯享网
 
  • 不做特殊声明,shell中变量都是全局变量
  • 局部变量 使用 「local」 关键字,函数内外同时存在同名变量,则函数内部会覆盖函数外部变量
讯享网
 
讯享网

两种程式

 

每个程序之后;; 双分号结尾;以 case开头以esac结尾

讯享网
 
操作符说明pwd查看当前目录cd切换目录 cd… cd ~ cd /ls查看当前目录的文件列表mkdir创建目录或文件echo打印cat链接、查看文件 > , >>less文件内容过多,以分页方式查看q退出mv移动, . 代表当前目录;移动文件到一个目录,最后一个为目标目录cp复制文件或目录rm移除文件或者目录rmdir删除目录
讯享网

bash的运算有以下几种方式

只能计算整数

语法格式: expr $num2

  • num1 | num2 – num1 不为空且非0,返回 num1 ; 否则返回 num2
  • num1 & num2 – num1 不为空且非0,返回 num1 ;否则返回0
  • num1 < num2 – num1 小于 num2 ,返回1;否则返回0
  • num1 <= num2 – num1 小于等于 num2 ,返回1;否则返回0
  • num1 = num2 – num1 等于 num2 ,返回1;否则返回0
  • num1 != num2 – num1 不等于 num2 ,返回1;否则返回0
  • num1 > num2 – num1 大于 num2 ,返回1;否则返回0
  • num1 >= num2 – num1 大于等于 num2 ,返回1;否则返回0
  • num1 + num2 – 求和
  • num1 - num2 – 求差
  • num1 * num2 – 求积
  • num1 / num2 – 求商
  • num1 % num2 – 求余

let命令声明变量时 可以直接执行算术表达式

 

文件测试运算符用于检测Unix/Linux文件的各种属性

操作符说明-b file检测文件是否是块设备文件-c file检测文件是否是字符设备文件-d file检测文件是否是目录-f file检测文件是否是普通文件,不是目录或者设备文件-g file检测文件是否设置了SGID位-p file检测文件是否是明管道-r file检测文件是否可读-w file检测文件是否可写-x file检测文件是否可执行-s file检测文件是否为空-e file检测文件(包括目录)是否存在
  • -e $file exist 的缩写,表示文件是否存在。
  • -d $file directory 的缩写,表示文件是否为一个目录。
  • -f $file file 的缩写,表示文件是否是一个文件。
  • -L $file Link 的缩写,表示链接。
  • -r $file readable 的缩写,表示文件是否可读。
  • -w $file writable 的缩写,表示文件是否可写。
  • -x $file executable 的缩写,表示文件是否可执行。
  • $file1 -nt $file2 表示文件 file1 是否比 file2 更新。
  • $file1 -ot $file2 表示文件 file1 是否比 file2 更旧。
运算符说明=检测两个字符串是否相等!=检测两个字符串是否不相等-z检测字符串长度是否为0-n检测字符串长度是否不为0str检测字符串是否不为空
  • $string1 = $string2 表示两个字符串是否相等。
  • $string1 != $string2 表示两个字符串是否不相等。
  • -z $string 表示字符串 string 是否为空。
  • -n $string 表示字符串 string 是否不为空。
运算符单词说明-eqequal检查两个数是否相等,相等返回true-nenot equal检查两个数是否相等,不相等返回true-gtgreat than检测左边的数是否大于右边的,如果是 返回true-ltless than检测左边数是否小于右边数,如果是 返回true-gegreat than or equal检测左边数是否大于等于右边的,如果是,返回true-leless than or equal检测左边数是否小于等于右边,如果是,返回true
  • $num1 -eq $num2 equal 的缩写,表示两个数字是否相等。
  • $num1 -ne $num2 not equal 的缩写,表示两个数字是否不相等。
  • $num1 -lt $num2 lower than 的缩写,表示 num1 是否小于 num2 。
  • $num1 -le $num2 lower or equal 的缩写,表示 num1 是否小于或等于 num2 。
  • $num1 -gt $num2 greater than 的缩写,表示 num1 是否大于 num2 。
  • $num1 -ge $num2 greate or equal 的缩写,表示 num1 是否大于或等于 num2
  • && 表示逻辑与,只要有一个不为真,整个条件测试为假。
  • || 表示逻辑或,只要有一个为真,整个条件测试就为真。
  • ! 表示反转测试条件。
预定义变量作用$?最后一次执行命令的返回状态,为0表示,上一个命令正确执行,否则代表上一个命令执行错误$$当前进程的进程号 PID$!后台运行的最后一个进程号PID
讯享网
位置参数变量$n$0表示当前脚本程序 $1-9代表第一到第九参数,10以上参数需要大括号 {10}$*代表命令行中所有参数,$把所有参数看成一个整体$@代表命令行中所有参数,每个参数区分对待$#代表命令行中所有参数的个数
 

export 声明的变量即是环境变量

env命令和set命令区别:set命令可以查看所有变量,而env命令只能查看环境变量

讯享网

unset 变量名

set -u 调用未声明变量会报错 -x 执行之前会把命令先输出一次 +&lt;参数&gt; 取消魔偶个set曾启动的参数

 

如果命令不用反引号包含,命令不会执行,而是直接输出 只有用反引号包含的命令、使用${命令}的方式也是可以

讯享网

如果输出使用单引号,则$name原封不动输出 如果输出使用双引号,则输出变量name的值sc 反引号和双引号括起来的命令会正常执行; 反引号被单引号括起来命令不会执行当做普通字符串输出

 

用于命令替换,获取命令的返回值

讯享网
  • ${}

用于变量替换

 

特殊变量替换

讯享网

 
  1. 「学习之路」 取Android技术路线经典电子书
  2. 「pdf」 取阿里&字节经典面试题、Android、算法、Java等系列武功秘籍。
  3. 「天涯」 取天涯论坛200+精彩博文,包括小说、玄学等

您的 点赞、评论、转发 是对我的巨大鼓励!

小讯
上一篇 2025-04-18 21:48
下一篇 2025-05-26 11:25

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/145224.html