Shell基礎知識(四)
阿新 • • 發佈:2019-01-27
span url 其中 name 的區別 取字符 字符串解析 進行 使用 字符串詳解
字符串可以由 單引號/雙引號/無引號 包圍。如下所示
>>
str1=hello
str2="hello"
str3=‘hello‘
<<
三種形式的區別:
1)由單引號包圍
字符原樣輸出,不對其中的變量進行解析。並且在字符串中不能出現單引號,即使加了轉義字符也不行。
2)由雙引號包圍
如果字符串中存在變量,那麽會對變量進行解析。可以存在雙引號,只要由轉義字符就行。
3)沒有符號包圍
如果有變量同樣也會被解析,但是不能出現空格,否則,會認為空格後面的內容是其他變量或者字符串解析。
獲取字符串長度
#!/bin/bash
str="hello world!"
echo ${#str}
字符串拼接
shell中字符串拼接不需要任何操作符,很簡單粗暴。
#!/bin/bash
nick_name="mocun"
name="yinzm"
str1=$nick_name$name str2="$nick_name $name" str3=$nick_name" : "$name str4="$nick_name : $name" str5="${nick_name} : ${name}"
echo $str1 echo $str2 echo $str3 echo $str4 echo $str5 字符串截取 可以從左邊開始,也可以從右邊開始截取。 #!/bin/bash str="hello,world!" echo ${str:6:5} echo ${str:6} echo ${str:0-6:5} echo ${str:0-6} 輸出:
echo ${url#*://} echo ${url#*//}
echo ${url#*w} echo ${url##*w}
echo ${url%.*} echo ${url%%.*}
str1=$nick_name$name str2="$nick_name $name" str3=$nick_name" : "$name str4="$nick_name : $name" str5="${nick_name} : ${name}"
echo $str1 echo $str2 echo $str3 echo $str4 echo $str5 字符串截取 可以從左邊開始,也可以從右邊開始截取。 #!/bin/bash str="hello,world!" echo ${str:6:5} echo ${str:6} echo ${str:0-6:5} echo ${str:0-6} 輸出:
world
world!
world
world!
shell還支持指定字串進行截取
#!/bin/bash url="https://www.google.com"
echo ${url#*://} echo ${url#*//}
其中#用來指定字符,*為通配符的一種,表示任意長度的字符串。*chars的意思就是忽略左邊的所有字符,直到chars,並且不包含chars。指定字串進行截取不能限定截取長度。
如果在字符串中有多處出現指定的字符,那麽只會在第一次遇到指定字符的時候開始截取。如果想改成最後一次遇到指定字符開始截取,使用##*的方式。如下:
#!/bin/bash url="https://www.google.com"
echo ${url#*w} echo ${url##*w}
輸出:
ww.google.com
.google.com
類似的,也可以截取指定字符左邊的字串。具體語法可以看示例:
#!/bin/bash url="https://www.google.com"
echo ${url%.*} echo ${url%%.*}
輸出:
https://www.google
https://www
Shell基礎知識(四)