shell判断grep返回值_年薪百万之路--第七⼗⼋天Linux基础
shell
⼀. 基础知识部分:
· 变量知识概念
1)常规变量:
临时定义⽅式:在脚本中或命令⾏中设置 oldboy=123
永久定义⽅式:在特殊系统变量⽂件中设置 /etc/profile /etc/bashrc ~/.bashrc ~/.bash_profile
设置变量:
① 进⾏字符串设置 name="oldboy" name=”123456" name="oldboy edu python"
② 进⾏变量调⽤ info="python" name="$info"
③ 进⾏命令信息设置 IP_info="$(hostname -i)" IP_info=`hostname -i`
2)环境变量
2)环境变量:
export INFO="XXXX"
有export定义变量:对当前登录窗⼝所有shell都⽣效
⽆export定义变量:只对当前shell⽣效
变量赋值⽅式:
①直接赋值: a=1 b=2 echo $a $b
service 启动或重启或停⽌服务
②传参赋值: a=$1 b=$2 ./test.sh oldboy oldgirl ./test.sh "oldboy oldgirl" oldman
③交互赋值:需要交互询问信息进⾏赋值
read -p "请输⼊学员姓名: " name age
echo $name >>
echo $age >>
3) 特殊变量
$0: ⽤于获取脚本名称信息,直接显⽰脚本名称和路径信息
echo "$0脚本执⾏失败,请检查脚本逻辑"
$#:统计出脚本的传⼊参数总数
$*:输出脚本所有参数信息
$@:输出脚本所有参数信息
$?:输出命令执⾏返回值利⽤返回值可以判断命令是否执⾏成功
0 表⽰操作执⾏成功
⾮0 表⽰操作执⾏失败
$$ 获取⼀个脚本执⾏PID信息
$! 获取上⼀个程序或脚本后台运⾏pid信息
sh test.sh & --- 让脚本后台运⾏
$_ 获取脚本的最后⼀个参数信息
sh test.sh a b c
echo $_
c
· 脚本执⾏⽅法
① 直接授权脚本执⾏权限,直接运⾏脚本
./test.sh /root/test.sh
② 利⽤命令信息执⾏脚本
sh ./test.sh bash ./test.sh --- 利⽤命令解释器执⾏脚本
source ./test.sh --- 脚本之间信息加载调⽤
·
系统正则知识
基础正则符号:^ $ ^$ . * .* [] [^]
^ : 可以匹配以指定信息开头内容
$ : 可以匹配以指定信息结尾内容
^$:可以匹配空⾏信息
grep -vE "^$|^#" --- 排除注释信息和空⾏信息
. :匹配任意且只有⼀个字符信息
* :匹配任意⼀个字符连续出现0次或多次情况
.*: 匹配任意所有字符信息
: 转义符号信息(将有意义信息变得没有意义将没有意义的信息变得有意义)
[]: 批量取出多个字符信息⼤写字母 A B
[^]: 排除指定多个字符信息进⾏过滤
grep 过滤 sed 编辑 awk 分析 --- 直接加载基础正则
扩展正则符号:+ | {} () ?
grep -E 过滤 sed -r 编辑 awk 分析
+ :匹配任意⼀个字符连续出现1次或多次情况
| : 可以匹配多个信息,多个信息之间是或者关系
{} :可以指定连续匹配的次数信息
{n} 正好连续n次
{n,} 最少连续出现n次,超过n次默认匹配
{,n} 最多连续出现n次,少于n次默认匹配‘
{n.m} 最少连续出现n次,最多匹配连续出现m次
(): 将多个字符信息当成⼀个整体进⾏匹配
: 匹配任意⼀个字符连续出现0次或1次情况
man grep/sed/awk
⼆.进阶知识部分
· 脚本算法知识
① $(()) --- 实现数值信息运算(只⽀持整数运算) echo $((1+2))
②⾃增⾃减运算
⾃减运算:$((a--))
[root@web01 ~]# a=10
[root@web01 ~]# echo $((a--))
10
[root@web01 ~]# echo $((a--))
9
[root@web01 ~]# echo $((a--))
8
[root@web01 ~]# echo $((a--))
7
[root@web01 ~]# a=10
[root@web01 ~]# echo $((--a))
9
⾃增运算:$((a++))
[root@web01 ~]# a=10
[root@web01 ~]# echo $((a++))
10
[root@web01 ~]# echo $((a++))
11
[root@web01 ~]# echo $((a++))
12
[root@web01 ~]# echo $((a++))
13
[root@web01 ~]# echo $((a++))
[root@web01 ~]# a=10
[root@web01 ~]# echo $((++a))
11
③ let --- 实现数值信息运算(只⽀持整数运算) [root@web01 ~]# i=2
[root@web01 ~]# let i=i+8
[root@web01 ~]# echo $i
10
④ expr --- 实现数值信息运算(只⽀持整数运算) [root@web01 ~]# expr 1 + 1
2
[root@web01 ~]# expr 2-1
2-1
[root@web01 ~]# expr 2 - 1
1
[root@web01 ~]# i=1
[root@web01 ~]# expr $i - 1
④ bc --- 实现数值信息运算但是只是整数和⼩数 [root@web01 ~]# echo 3+5|bc
8
您在 /var/spool/mail/root 中有邮件
[root@web01 ~]# echo 3.3+5.3|bc
8.6
[root@web01 ~]# echo 3.3679+5.30987|bc
8.67777
· 脚本信息⽐较
数值信息⽐较:
eg:记录学员信息,如果学员年龄信息⼤于30岁,不能进⾏录取 # cat test.sh
#!/bin/bash
read -p "请问你的年龄多少:" age
if [ $age -gt 30 ]
then
echo 不能进⾏录取
else
echo 欢迎加⼊
fi
-lt 表⽰⼩于
-gt 表⽰⼤于
-
eq 表⽰等于
-ne 表⽰不等于
-le 表⽰⼩于等于
-ge 表⽰⼤于等于
字符信息⽐较:
eg:验证员⼯⼝令,⼝令通过可以进⼊公司
#!/bin/bash
read -p "请说出⼝令信息:" age
if [ "$age" == "天王盖地虎" ]
then
echo 欢迎
linux循环执行命令脚本else
echo 有⼊侵
fi
== 表⽰字符串信息匹配成功
!= 表⽰字符串信息匹配失败
· 判断语句说明
if判断语句:
1)单分⽀判断语句
如何... 就 ...
if [ 好看 ]
then
和他/她在⼀起
fi
2)双分⽀判断语句
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论