Shell学习_04

Shell

case分支

语法:

case分支,功能类似if,不如if强大,代码比if精简
case 变量名称
模式1)
执行命令1;;
模式2)
执行命令2;;
*)
执行命令n
esac
#!/bin/bash
case $1 in
a)
echo aaa;;
b)
echo bbb;;
c)
echo ccc;;
*)
echo "请输入a或b或c"
esac
  • 颜色修改

    [root@tedu ~]# systemctl status sshd #查看该服务的运行情况
    #零三三 零m
    #\033扩展用法 31m红色 ABCD自己写的数据 后面的\033 0m还原颜色
    [root@tedu ~]# echo -e "\033[31mABCDE\033[0m"
    ABCDE
    [root@tedu ~]# echo -e "\033[32mABCDE\033[0m"
    

函数

函数将公共的语句存储在一个变量中,达到精简脚本的命令目录

函数名称(){
	指令
}
function 函数名 {
	命令序列
	.. ..
}
  • 函数定义

    #定义函数
    [root@tedu ~]# a(){
    > echo 123
    > echo abc
    > echo -e "\033[32mABCDE\033[0m"
    > }
    查看函数
    [root@tedu ~]# type a
    a 是函数
    a ()
    {
    echo 123;
    echo abc;
    echo -e "\033[32mABCDE\033[0m"
    }
    [root@tedu ~]#
    使用函数
    [root@tedu ~]# a
    123
    abc
    ABCDE
    
  • 改变颜色的函数,第一版

    #!/bin/bash
    #定义函数
    myecho(){
    echo -e "\033[32mABCD\033[0m"
    }
    #使用函数
    myecho
    #!/bin/bash
    #定义函数
    myecho(){
    echo -e "\033[$1m$2\033[0m"
    return 0
    }
    #使用函数
    myecho 31 abc #传递参数
    myecho 32 123
    myecho 33 456
    myecho 34 jqk
    myecho 35 qwer
    
  • 中断脚本的操作

    exit 退出脚本
    break 退出循环,继续执行循环之后的任务
    continue 退出当前循环,执行下一次循环
    
  • 案例

    从键盘获取整数(的呼入0结束)并求和,输出结果

    #第一版
    #!/bin/bash
    sum=0
    while :
    do
    	read -p "请输入一个数字" n
    	let sum=sum+n
    done
    
    #第二版
    #!/bin/bash
    sum=0
    while :
    do
    	read -p "请输入一个数字" n
    	[ $n -eq 0 ] && break
    	let sum=sum+n
    done
    echo $sum
    #第三版
    #!/bin/bash
    sum=0
    while :
    do
    	read -p "请输入一个数字" n
    	if [ -z $n ];then
    		echo "你咋输入了一个空的!,请输入一个数,或者按0结束"
    		continue
        fi
    	if [ $n -eq 0];then
    		break
    	fi
    	let sum=sum+n
    done
    echo $sum
    

    找出20以内6的倍数,并输出它的平方

    for i in {1..20}
    do
    	x=$[i%6] #x是余数
    	[ $x -eq 0 ] || continue #余数等于0继续下面任务,不等于0结束
    	echo $[i*i]
    done
    
    
    for i in {1..20}
    do
    	x=$[i%6] #x是余数
    	if [ $x -eq 0 ];then
    	echo $[i*i]
    	fi
    done
    
    

字符串的处理

字符串的处理

字符串的截取

$(变量名:起始位置:长度)

[root@tedu ~]# a=abcdef
[root@tedu ~]# echo ${a:2} #从第二位截取后面
cdef
[root@tedu ~]# echo ${a:2:3} #从第二位截取后面三位
cde
[root@tedu ~]# echo ${a:2:1} #从第二位截取后面1位
c
[root@tedu ~]# echo ${a:0:1} #从第一位截取后面1位
a
#如何生成随机字母
a=qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM1234567890
如何生成8位的随机密码
#!/bin/bash
a=qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM1234567890
pa=''
for i in {1..8}
do
b=$[RANDOM%62]
p=${a:$b:1}
pa=$pa$p
done
echo $pa

shell中的运算

  • 方法一:

    expr + - * /
    \ : 转义符号,可以屏蔽之后一个字符的特殊含义
    
    [root@tedu ~]# expr 1 + 1 #加
    2
    [root@tedu ~]# expr 10 - 2 #减
    8
    [root@tedu ~]# expr 10 * 2 #
    expr: 语法错误
    [root@tedu ~]# expr 10 '*' 2 #乘
    20
    [root@tedu ~]# expr 10 \* 2
    20
    [root@tedu ~]# expr 4 / 2 #除
    2
    [root@tedu ~]# expr 5 % 2 #求模(取余数)
    1
    [root@tedu ~]# a=100
    [root@tedu ~]# b=33
    [root@tedu ~]# expr $a + $b
    133
    [root@tedu ~]# expr $a - $b
    67
    [root@tedu ~]# expr $a '*' $b
    3300
    [root@tedu ~]# expr $a / $b
    3
    [root@tedu ~]# expr $a % $b
    1
    
  • 方法二

    $[]

    [root@tedu ~]# echo $[1+1]
    2
    [root@tedu ~]# echo $[5-3]
    2
    [root@tedu ~]# echo $[3*3]
    9
    [root@tedu ~]# echo $[5/3]
    1
    [root@tedu ~]# echo $[5%3]
    2
    [root@tedu ~]# echo $[$a+$b]
    133
    [root@tedu ~]# echo $[a+b]
    133
    [root@tedu ~]# echo $[a+33]
    133
    
  • 方法三

    let 运算结果不显示,通常用于变量创建或者变量自增减

    [root@tedu ~]# let 1+1 #不显示无法取值
    [root@tedu ~]# let a=1+1 #通过运算的方法创建变量
    [root@tedu ~]# echo $a
    2
    [root@tedu ~]# let a++ #用于自增减>a=a+1
    [root@tedu ~]# echo $a
    3
    [root@tedu ~]# let a-- #>a=a-1
    [root@tedu ~]# echo $a
    2
    [root@tedu ~]# let a=a+2 #不建议写法
    [root@tedu ~]# echo $a
    4
    [root@tedu ~]# let a+=2 #>a=a+2
    [root@tedu ~]# echo $a
    6
    [root@tedu ~]# let a/=5 #>a=a/5
    [root@tedu ~]# echo $a
    1
    
  • 方法四

    bc计算器:可以计算小数

    [root@tedu ~]# echo 1.1+1 | bc
    2.1
    [root@tedu ~]# echo 'scale=3;10/3' | bc
    3.333
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值