shift 将位置变量向左移,默认移动一个位置,如果想要移动多个则在shift后面加上想要移动的个数
[root@localhost ~]# ./shift.sh a b c
a b c
b c
c
[root@localhost ~]# cat shift.sh
#!/bin/bash
echo $1 $2 $3
shift
echo $1 $2 $3
shift
echo $1 $2 $3
[root@localhost ~]# ./shift.sh a b c d
a b c
b c d
c d
shell中字符串的长度
求字符串的长度:
1.wc -L
2.echo ${#要求的字符串}
3.expr length 要求的字符串
对变量字符串切割:
格式:echo ${要求的字符串:4}
从字符串第4位开始的所有字符串
echo ${要求的字符串:4:2}
从字符串第4位开始取2位
第一个字符串是从0开始计算
echo ${要求的字符串#A*C}
删除以A开头,第一个C结尾,输出剩下的结果
这个是不贪婪匹配
echo ${要求的字符串##A*C}
2个#代表贪婪模式,尽可能多的匹配,A到C之间的全部删除,包括自身
echo ${要求的字符串%A*C}
从后向前寻找删除
%与#寻找方向相反,其他寻找方式一样
echo ${变量名/A/C}
将A替换为C
echo ${变量名//A/C}
贪婪模式,所有的A全部替换为C
数组
一个值用来表示多个变量就是数组
array=(变量1 变量2 变量3)
变量用空格隔开
通过echo打印只会打印第一个变量,通过* @ 可以都打印出来,也可以使用循环打印
循环打印:for i in ${array【@||*】};do echo $i ;done
数组的增删改查
查:格式:echo ${array【@||*】}
打印指定位置的值:echo ${array[1]}
求数组的长度:echo ${#array[@]}
增: array【1-9】=想要添加的变量
删:unset array【位置】删除一个值,不加位置则是删除整个数组