獲取長度
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