LV015-字符串
一、字符串
1. 基本格式
在 shell 中,字符串可以用单引号,也可以用双引号,也可以不用引号。
- 单引号
单引号里的任何字符都会原样输出,单 引号字符串中的变量是无效的。单引号字串中不能出现单独一个的单引号(对单引号使用转义符后也不行),但可成对出现,作为字符串拼接使用。
shell
str='string'- 双引号
双引号里可以有变量,也可以出现转义字符。
2. 拼接字符串
2.1 使用单引号拼接
shell
#!/bin/bash
str1='World'
str2='Hello,'$str1' !'
str3='Hello, $str1 !'
echo $str2
echo $str3输出结果为:
shell
Hello,World !
Hello, $str1 !2.2 使用双引号拼接
shell
#!/bin/bash
str1="World"
str2="Hello, "$str1" !"
str3="Hello, $str1 !"
echo $str2
echo $str3输出结果为:
c
Hello, World !
Hello, World !3. 获取字符串长度
3.1 使用格式
shell
${#<string >}- string :为要获取长度的目标字符串变量。
3.2 使用实例
shell
#!/bin/bash
str1='World'
str2="World"
echo "str1's length=${#str1}"
echo "str1's length=${#str2}"输出结果为:
shell
str1's length=5
str1's length=54. 提取字符串
4.1 截取方式 1
shell
${<string>:n:len}提取出的字符串为 n 位置处字符极其之后的 len-1 个字符。
- string :为要获取长度的目标字符串变量。
- n :为起始字符位置;
- len :为截取字符串的长度。
【注意】 字符串中首个字符的索引为 0 。
【使用实例】
shell
#!/bin/bash
str1='Hello, World'
str2="Hello, World"
echo "${str1:2:3}"
echo "${str2:2:7}"输出结果为:
shell
llo
llo, Wo4.2 截取方式 2
shell
${parameter#*word} # 即从左向右截取第一个 word 后的字符串
${parameter##*word} # 即从左向右截取最后一个 word 后的字符串
${parameter%word*} # 即从右向左截取第一个 word 前的字符串
${parameter%%word*} # 即从右向左截取最后一个 word 前的字符串【注意】 上边的这些命令截取之后,都是不包含 word 的,所以如果开头或者结尾含有 word 的时候,可能会截取出来一个空的字符串。
【使用实例】
shell
#!/bin/sh
FILE_PATH=a/b/c/d/file.tar.gz
echo "\${FILE_PATH} = ${FILE_PATH}"
echo ""
echo "\${FILE_PATH#*/} = ${FILE_PATH#*/}"
echo "\${FILE_PATH##*/} = ${FILE_PATH##*/}"
echo "\${FILE_PATH%/*} = ${FILE_PATH%/*}"
echo "\${FILE_PATH%%/*} = ${FILE_PATH%%/*}"
echo ""
echo "\${FILE_PATH#*.} = ${FILE_PATH#*.}"
echo "\${FILE_PATH##*.} = ${FILE_PATH##*.}"
echo "\${FILE_PATH%.*} = ${FILE_PATH%.*}"
echo "\${FILE_PATH%%.*} = ${FILE_PATH%%.*}"输出的结果如下:
shell
hk@vm:~/1sharedfiles/6temp$ ./1.sh
${FILE_PATH} = a/b/c/d/file.tar.gz
${FILE_PATH#*/} = b/c/d/file.tar.gz
${FILE_PATH##*/} = file.tar.gz
${FILE_PATH%/*} = a/b/c/d
${FILE_PATH%%/*} = a
${FILE_PATH#*.} = tar.gz
${FILE_PATH##*.} = gz
${FILE_PATH%.*} = a/b/c/d/file.tar
${FILE_PATH%%.*} = a/b/c/d/file5. 查找字符串中字符
5.1 使用格式
可以通过 expr 实现字符串中特定字符的查找,这种查找方式会查找字符串中首次出现该字符的位置。
shell
Variable= `expr index "${<string>}" <char> `- string :为要查找的目标字符串变量。
- char :为要查找的字符。
【使用实例】
shell
string="runoob is a great site"
echo `expr index "$string" o` # 输出 4【注意】
(1)在查找过程中,字符串中首个字符的索引为 1 。
(2)以上脚本中 ` 是反引号,而不是单引号 '。
(3) char 可以是多个字符,例如对于 ac , a , c 两个字符哪个先出现,就会停止查找,返回首先出现的字符在目标字符串中的首次出现的位置。
5.2 使用实例
shell
#!/bin/bash
str1='Hello, World'
str2="Hello, World"
echo expr index "$str1" ' '
echo expr index "$str2" l输出结果为:
shell
7
3