Linux提供的Shell解析器
bash和sh的关系
-
sh是bash的一个软链接
注意:Centos默认的Shell解析器是bash
定义bash变量
-
环境变量名建议大写
-
等号两侧不能有空格,如果有空格,则需要使用双引号或单引号括起来
-
定义时不用加$符号,使用时需要加$符号
1是查看现在username,2是删除现在username
定义数组
-
数组名=("项" "项")
:无逗号隔开
set查看所有的变量
set
unset取消变量的设置
unset 变量名
export将局部变量提升为全局
export 变量名
Bash变量引号的使用
-
没有引号
对纯字符没有印象
dog='金毛'
或者dog=金毛
或者dog="金毛"
都可以声明 -
用单引号:不会解析变量,字符串始终被解释为它本身
-
用双引号:会解析变量
-
将命令的结果保存到变量中(避免使用反引号)
变量名=$(命令)
特殊的变量名
-
$n:给脚本传参
$1~$9代表第一到第九个参数,10以上的参数需要使用{},如${10}
demo2.sh是$0的参数(即脚本名),a是$1的参数,a是$1的参数,b是$2的参数
-
$#:获取传参的个数
-
$*:拿到参数的所有数据(看成整体)
-
$@:拿到参数的所有数据(每个参数区分对待)
-
$?:查看上一次命令或者脚本的执行状态的结果是否有问题(0-->正确 非0-->错误)
运算符
$((运算式))
或者$[运算式]
或者expr +、-、\*、/、%(要有空格)
逻辑运算符
[条件] ✔ 注意:[]里面前后必须要有空格
-
两个整数之间比较
-
按照文件权限进行判断
-
按照文件类型进行判断
-
多条件判断
&&表示前一条命令执行成功时,才执行下一条命令
||表示前一条命令执行失败后,才执行下一条命令
1前面是正确的,与"对" 与,输出"对" ;2前面是错误的,与"对" 与,不输出
正则表达式
-
常规匹配:
cat /etc/passwd | grep root
-
特殊字符
-
^ :会匹配/etc/passwd中以root开头的⾏
-
$:匹配出/etc/passwd中以bash结尾的⾏
-
. : .匹配⼀个任意字符,如下,可以匹配含有四个字符,其中第1个字符是r,第4个字符是t的⾏,中间两个 可以是任意字符
-
*: *不单独使⽤,他和上⼀个字符连⽤,表示匹配上⼀个字符0次或多次,如下,可以匹配第1个字符是r, 最后1个字符是t,中间可以包含任意数量的o
-
字符区间 []: []表示匹配某个范围内的⼀个字符
[6,8] 匹配6或者8 [0-9] 匹配一个0-9的数字 [0-9]* 匹配任意长度的数字字符串 [a-z] 匹配一个a-z的字符 [a-z]* 匹配任意长度的字母字符串 [a-ce-f] 匹配a-z或者e-f之间的任意一个字符 例:
1是在0-9之间;2和3是在0-9之间且后面是数字3或6的;4是a-z之间且后面是数字0-9的
-
-
例:找出所有包含‘ $’ 的⾏
-
特殊字符 \ :匹配某⼀特殊字符本身
条件选择\判断
条件选择if
-
[ 条件判断式 ] :中括号和条件判断式之间必须要有空格
-
if后面要有空格
demo3.sh脚本内容:
结果展示:
条件判断case
注意:行尾必须为单词in ; 双分号";;"表示命令序列结束 ; 最后的*)表示默认格式,相当于java中的default
循环(4种)
for循环
例如:100以内的累加并输出结果
$@最终会被""解析为一个数组每个元素都是传入的参数
$*最终会被""解析为一个连续的字符串只有一个元素
while循环
until 循环
例如:100以内的累加并输出结果
select循环与菜单
例:菜单
continue结束本轮循环,进入下一轮循环;break提前结束循环
read读取控制台输入
-p: 指定读取值的时间
-t:指定读取时等待的时间(秒)
例:计算输入的是不是一个质数
标签:字符,Shell,匹配,--,空格,参数,bash,Linux,个字符 From: https://blog.csdn.net/m0_63016075/article/details/140574759