4.1SHELL


核心位置变量
$0 获取shell脚本的名称 执行如果带全路径 则$0带全路径                  *****
$n n为数字 从1开始 $1为脚本的第一个参数 从$9往后 我们需要加${10}      *****
$# 获取脚本传参的总个数 针对传入的个数进行判断                          *****    
$* 获取脚本传参的所有的参数 在循环体中不同 加上顺引号视为单个字符串   了解 
$@ 获取脚本传参的所有的参数 在循环体中不同 加上双引号视为独立的参数   了解
$? 获取上一条命令的返回值 0为成功 非0失败                              *****
$$ 获取脚本的PID进程号                                                  **
$! 获取上一个在后台运行脚本的PID号 测试常用                              **
$_ 获取脚本的最后一个参数或者是东东 类似esc .

子串的删除 支持通配符
1.#从前面往后删除   ## 贪婪匹配
[root@shell ~]# echo ${url#www.}
baidu.com
[root@shell ~]# echo ${url#www.}
baidu.com
[root@shell ~]# echo $url
www.baidu.com
[root@shell ~]# echo ${url#*.}
baidu.com
[root@shell ~]# echo ${url#*.*c}
om
[root@shell ~]# echo ${url#*.*.}
com

[root@shell ~]# echo ${url##*.}
com

2.从后面往前删除
[root@shell ~]# echo $url
www.baidu.com
[root@shell ~]# echo ${url%.*}
www.baidu
[root@shell ~]# echo ${url%.*.*}
www
[root@shell ~]# echo ${url%%.*}
www

3.子串的替换 /替换谁/替换成谁  /// 贪婪替换

[root@shell ~]# echo $url
www.baidu.com
[root@shell ~]# echo ${url/w/W}
Www.baidu.com
[root@shell ~]# echo ${url//w/W}
WWW.baidu.com

2.数值运算
expr  只支持整数运算
[root@shell ~]# expr oldboy
oldboy
[root@shell ~]# expr hehe
hehe
[root@shell ~]# expr 1 + 1
2
[root@shell ~]# expr 1 + 100
101


$(())  只支持整数运算 注意不要和$()冲突了 执行的命令和``相同
[root@shell scripts]# echo $((10+10))
20

let 只支持整数运算
[root@shell ~]# let a=1+1
[root@shell ~]# echo $a
2

[root@shell ~]# let i=i+1
[root@shell ~]# echo $i
2
[root@shell ~]# let i++
[root@shell ~]# echo $i
3
[root@shell ~]# let i=i+1
[root@shell ~]# echo $i
4

直接运算 ++i i++ 相同 都是自增1

bc 支持整数和小数运算
[root@shell ~]# echo 10+10|bc
20
[root@shell ~]# echo 10+10.5|bc
20.5


[root@shell ~]# awk 'BEGIN{print 10+10}'
20
[root@shell ~]# echo 10 20|awk '{print $1+$2}'
30
[root@shell ~]# echo 10 20|awk '{print $1*$2}'
200

第二种: 常用
      [ -f /etc/hosts ] # 判断是否为普通文件
      [ -d  file ]   # 文件存在并且为目录
      [ -e  file ]   #  文件存在则为真
      [ -r  file ]   #  文件可读则为真
      [ -w  file ]   #  文件可写则为真
      [ -x  file ]   #  文件可执行则为真

比较符
INTEGER1 -eq INTEGER2   相等         -eq
INTEGER1 -ge INTEGER2   大于或者等于 -ge      
INTEGER1 -gt INTEGER2    大于         -gt
INTEGER1 -le INTEGER2    小于或者等于 -le
INTEGER1 -lt INTEGER2    小于         -lt
INTEGER1 -ne INTEGER2    不等于       -ne

案例:反向破解随机数 通过MD5值破解出对应的数字

[root@shell ~]# echo $RANDOM|md5sum |cut -c1-8
2d8a8c96

[ 10 -eq 10 -o 10 -gt 20 -o 20 -lt 10 ] && echo "成立" ||echo "不成立"
成立

支持正则 [[]]  && 并且 || 或者

[[ 10 -eq 10 && 10 -gt 5 ]] && echo "成立" ||echo "不成立"

三个判断
1.以返回结果判断       $?
2.判断数字是否为整数   expr 
3.判断字符串不允许为空 -z
4.使用正则判断数字是否为整数 [[ $num =~ ^[0-9]+$ ]]

while循环
语法结构:
while  [ 条件表达式 ]   条件表达式成立(为真)则执行 否则不执行
do
    命令
done

死循环 笔试题
[root@shell day3]# cat while.sh 
#!/bin/sh
while true
do
    echo hehe
    sleep 1
done

[root@shell day3]# cat while.sh
#!/bin/sh
i=1
while [ $i -le 10 ]
do
    let i++
    echo hehe
done
 

[root@shell day4]# cat fun.sh 
#!/bin/sh
fun1(){
      echo 100
      return 50
}
fun1
 

[root@shell day4]# cat case.sh Docker
#!/bin/sh
case $1 in
        Shell)
    echo shell......
    ;;
    MySQL)
    echo MySQL......
    ;;
    Docker)
    echo docker......
    ;;
    *)
    echo hehe......
esac

[root@shell day4]# cat case.sh
#!/bin/sh
menu(){
cat<<EOF
                       1.f查看内存 
                       2.w查看负载
                       3.d查看磁盘
                       4.l查看登录信息
                       5.m显示菜单
EOF
}
menu
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值