shell脚本函数运用、字符串处理及定义变量初值

一、shell脚本函数运用

函数:可以利用一个名称存储公共的语句块,实现精简脚本方便后期调用的目的。

1.1 书写格式

函数名(){

指令

}

1.2 示例

使用函数修改字符颜色。

[root@test1 ~]# vim hanshu01.sh  #创建脚本
#!/bin/bash
a(){   #创建函数,名字叫a
echo -e "\033[$1m$2\033[0m"    #输出带颜色的字符
}

a 31 ABCD    #调用函数时,后面跟第一个位置变量定义颜色第二个位置变量定义内容
a 32 xyzZ
a 33 EGSD
a 34 ERTY
a 35 BJYQ

[root@test1 ~]# chmod u+x hanshu01.sh #给执行权限

运行以上脚本,就会输出带颜色字体。

[root@test1 ~]# ./hanshu01.sh

二、字符串的处理

2.1 字符串的截取

${变量名称:截取位置:截取长度}

[root@test1 ~]# a=abcd      #定义变量
[root@test1 ~]# echo ${a:1:2}   #从第二位截取两位
bc
[root@test1 ~]# echo ${a:0:2}   #从头截取两位
ab 

示例:

编写脚本,可以生成8位随机字符用作密码

注意该脚本用到以下思路:

[root@test1 ~]# c=a$c    #首先准备一个变量c作为口袋可以装字符
这里装了一个字符a
[root@test1 ~]# echo $c    #看看口袋里
a
[root@test1 ~]# c=6$c     #再往口袋里装一个字符6
[root@test1 ~]# echo $c   #再看看,口袋里字符越来越多
6a
[root@test1 ~]# c=t$c    #再装个字符t
[root@test1 ~]# echo $c   #字符又增加了
t6a

编写脚本:

[root@test1 ~]# vim zifuchuan.sh
#!/bin/bash
x=abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789
for i in {1..8}
do
n=$[RANDOM%62]  #得到0~61随机数存在变量n中
a=${x:n:1}   #截取到1个随机字符,存在变量a中
c=$a$c   #不断往c中追加,此时c相当于一个袋子
done
echo $c   #最后喊出,得到8位长度随机字符串

[root@test1 ~]# chmod u+x zifuchuan.sh #给执行权限

#多次运行脚本,每次生成密码不同
[root@test1 ~]# ./zifuchuan.sh  
gWkx7Lb9
[root@test1 ~]# ./zifuchuan.sh 
tPdj8Jdo
[root@test1 ~]# ./zifuchuan.sh 
JijkPMkP

2.2 字符串替换

${变量名/旧/}

[root@test1 ~]# a=1234
[root@test1 ~]# echo ${a/2/6}    #将1个字符2换成6
1634
[root@test1 ~]# a=112233  
[root@test1 ~]# echo ${a/2/6}    #将1个字符2换成6
116233
[root@test1 ~]# echo ${a//2/6}   #将所有字符2换成6
116633
[root@test1 ~]# a=1122233
[root@test1 ~]# echo ${a/22/66}   #换2个
1166233
[root@test1 ~]# echo ${a/11/}    #将11替换成空,相当于删除
22233

2.3 字符串的删除

${变量名#要删除的内容}     掐头

${变量名%要删除的内容}     去尾

[root@test1 ~]# a=abcdef   #创建变量,作为素材
[root@test1 ~]# echo ${a#abc}    #掐头,删除到abc
def
[root@test1 ~]# echo ${a%def}    #去尾,删除到def
abc
[root@test1 ~]# echo ${a#abcde}    #掐头,删除到abcde
f
[root@test1 ~]# a=abcdefghijk   #创建变量,作为素材
[root@test1 ~]# echo ${a#abcdefghi}   #掐头,删除到i
jk
[root@test1 ~]# echo ${a#*i}        #效果同上,精简写法
jk
[root@test1 ~]# echo ${a%defghijk}  #去尾,删除到d
abc
[root@test1 ~]# echo ${a%d*}      #效果同上,精简写法
abc

三、定义变量初值

${变量名:-初值}

3.1 示例

用脚本创建用户并设置密码

[root@test1 ~]# vim bianliang.sh
#!/bin/bash
read -p "请输入用户名:"  u
[ -z $u ] && echo "必须输入用户名!"  && exit
useradd $u
read -p "请输入密码(默认123456):"  n
echo ${n:-123456} | passwd --stdin $u

[root@test1 ~]# chmod u+x bianliang.sh 
[root@test1 ~]# ./bianliang.sh 
请输入用户名:ziha
请输入密码(默认123456):123456
更改用户 ziha 的密码 。
passwd:所有的身份验证令牌已经成功更新。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值