获取长度
root@ubuntu:/home/test/Desktop# a="hello world"
root@ubuntu:/home/test/Desktop# echo ${#a}
11
字符串切片
${parameter:offset} 偏移量
$(parameter:offset:length} 偏移量:长度
root@ubuntu:/home/test/Desktop# echo ${a:1:2}
el
截取最后一个字符
root@ubuntu:/home/test/Desktop# echo ${a:(-1)}
d
字符串替换
不改变原有的变量
root@ubuntu:/home/test/Desktop# echo ${a/hello/HELLO}
HELLO world
root@ubuntu:/home/test/Desktop# echo ${a/h/H}
Hello hello world
root@ubuntu:/home/test/Desktop# echo ${a//h/H}
Hello Hello world
root@ubuntu:/home/test/Desktop# echo ${a//[a-l]/8}
8888o 8888o wor88
You have new mail in /var/mail/root
root@ubuntu:/home/test/Desktop# echo ${a/[a-l]/8}
8ello hello world
第一个分隔符如果是“/”,就替换1个。
如果是“//”,就替换所有
支持正则表达式
字符串截取
${parameter#world}
${parameter##world}
${parameter%world}
${parameter%%world}
支持正则,删除匹配到的文档
#是左边 ,##是长匹配
%是右边,%%是长匹配
root@ubuntu:/home/test/Desktop# echo ${a%/*}
http://www.baidu.com/baike
root@ubuntu:/home/test/Desktop# echo ${a%%/*}
http:
变量状态赋值
echo ${var:-string}是空返回string
echo ${var:+string}不是空返回string
echo ${var:=string}是空赋值var=string
echo ${var:?string}如果是空将string输出到stderr
root@ubuntu:/home/test/Desktop# echo $aroot@ubuntu:/home/test/Desktop# echo ${a:-"kong"}
kong
root@ubuntu:/home/test/Desktop# echo $aroot@ubuntu:/home/test/Desktop# echo ${a:+"kong"}You have new mail in /var/mail/root
root@ubuntu:/home/test/Desktop#
root@ubuntu:/home/test/Desktop# echo ${a:="kong"}
kong
You have new mail in /var/mail/root
root@ubuntu:/home/test/Desktop# echo $a
kong
root@ubuntu:/home/test/Desktop# a=
root@ubuntu:/home/test/Desktop# echo ${a:?"error"}
bash: a: error
root@ubuntu:/home/test/Desktop#
字符串颜色
字体颜色:从30-37
字体背景颜色:40-47
显示方式:0-8
for i in {31..37}
do
echo -e "\033[$i;40mHello\033[0m"# 格式 \033["字体颜色编号";"背景颜色编号""内容"\033[0m.后面的033[0m是恢复默认。done
数组的操作
数组的操作和元组很容易混乱
数组的格式:
arrary=(1 2 3)
使用空格分开
arrary=(a b c)
新建并添加元素
root@ubuntu:/home/test/Desktop# a=("a" "b" "c" "d")
root@ubuntu:/home/test/Desktop# echo ${a[@]}
a b c d
root@ubuntu:/home/test/Desktop# echo ${#a[@]}
4
root@ubuntu:/home/test/Desktop# echo ${#a[*]}
4
root@ubuntu:/home/test/Desktop# echo ${!a[*]}
0 1 2 3
root@ubuntu:/home/test/Desktop# echo ${!a[@]}
0 1 2 3
通过获取已有元素的个数来判定元素的位置,根据位置打印元素。前提是不知道元素的长度
a=("a" "b" "c" "d")
for i in ${!a[*]}; doif (( $i == 2));thenbreakfi
echo $i
echo ${a[${i}]};
#echo ${a[i]}
done
root@ubuntu:/home/test/Desktop# a[4]=5root@ubuntu:/home/test/Desktop# echo ${a[*]}
a b c d 5
root@ubuntu:/home/test/Desktop# a+=(1 2 3)
You have new mail in /var/mail/root
root@ubuntu:/home/test/Desktop# echo ${a[*]}
a b c d 5 1 2 3
如果添加多个数组,只能使用
a+=(1 2 3)
释放和删除数组:
root@ubuntu:/home/test/Desktop# echo ${a[*]}
a b c d 5 1 2 3
多次执行删除a[0],只能删除1个。因为元素的下标并没有自动更新
root@ubuntu:/home/test/Desktop# unset a[0]
root@ubuntu:/home/test/Desktop# unset a[0]
root@ubuntu:/home/test/Desktop# unset a[0]
root@ubuntu:/home/test/Desktop# echo ${a[*]}
b c d 5 1 2 3
root@ubuntu:/home/test/Desktop# echo ${!a[*]}
1 2 3 4 5 6 7
删除整个,就用unset{a}
root@ubuntu:/home/test/Desktop# unset a
You have new mail in /var/mail/root
root@ubuntu:/home/test/Desktop# echo ${a[*]}root@ubuntu:/home/test/Desktop#
关于linux中的数组,有哪些产生数据的命令
可以使用{}或者seq都可以产生遍历序列
#for i in $(seq 0 2 100);do
# echo $i
# done
for i in {1..100}; doecho "$i"done