字符串的处理: ${:截取 /替换 #掐头 % 去尾}
字符串的截取的三种处理方法:
方法一:(注:从左开始第一位是以0开始)
${}
格式${取用的变量名:起始位数:长度}
例: x=1234567890
echo ${x:1:3} (输出是234)
${x::6}默认不写是从第一位开始截取
方法二:(注:从左开始第一位是以1开始)
expr substr “$取用的变量名” 起始位置的值 长度
例: expr subdtr “$x” 1 3 (输出为123)
方法三:(注:从左开始第一位是以1开始)
echo $取用的变量的名 | cut -b 起始位置-结束位置
echo $取用的变量的名 | cut -b 3,4,5,7,9
例: echo $x | cut -b 3,5 (输出为35)
echo $x | cut -b 1-3 (输出为123)
字符串的替换:/
<vim编辑器中>:%s/旧的内容/新的内容/g (vim中%操作对每一行都执行,g对行的 每一个都执行)
echo ${x/3/} (只更换x中的第一个3)显示出的数值时3换为但是x的值不变
echo ${x//3/} (更换x中的所有3)显示出的数值时3换为但是x的值不变
echo ${x/[1-4]/*}(支持[ ] 更换连续的)
字符串的掐头去尾:%去尾(从右往左删)... #掐头(从左往又删)##(一个#删除最短 2个#删除所有)
${取用的变量的名%#关键词}
例:[root@B ~]# x=head -1 /etc/passwd
[root@B ~]# echo $x
root:x:0:0:root:/root:/bin/bash
root:x:0:0:root:/root:/bin/bash
[root@B ~]# echo ${x#root:}
x:0:0:root:/root:/bin/bash
[root@B ~]# echo ${x#:}
x:0:0:root:/root:/bin/bash
[root@B ~]# echo ${x##:}
/bin/bash
touch {a,b,c,d,e,f}.txt
#!/bin/bash
for i in ls *.txt
do
mv $i ${i%.txt}.doc
done
计算1-100所有偶数的和
#!/bin/bash
num=0
for i in {1..100}
do
a=$[i%2]
if [ $a -eq 0 ];then
let num=$num+$i
fi
done
echo $num
~
字符串赋初值: ( :- )
echo ${XX:-123}
例:
#!/bin/bash
read -p "请输入用户名:" name
if [ -z $name ]; then
echo "必须输入用户名"
exit
fi
read -p "请输入密码:" pass
pass=${pass:-123}
useradd "$name"
echo "$pass" | passwd --stdin "$name"
提示用户输入一个数:计算1到改数字的和,如果不输入则输出1-100的值
#!/bin/bash
read -p "请输入一个数字:" num
a=${num:-100}
b=0
for i in seq $a
do
let b=$b+$i
done
echo $b
数组:(一个变量,存放多个值)(从左往右以第0位开始)
a=(11 22 33 aa bb cc)定义并赋值
等同于
a[0]=11
a[1]=22
a[2]=33
a[3]=aa
a[4]=bb
a[5]=cc
echo ${a[0]} 输出为11 (取的是第一个值)
echo ${a[*]} 输出为所有的a的值