Shell字符串

单引号 所见即所得,单引号中的内容会原封不动的输出 双引号 输出双引号内的所有内容;如果内容中有命令(要反引下)、变量、特殊转义符等,会先把变量、命令、转义字符解析出结果,然后再输出最终内容,推荐使用,这称为弱引用 反引号(键盘左上角英文模式 Esc下面的波浪键) 执行命令,例如echo “`ls`“ 会执行ls命令

my_name="Charlie"
echo '$my_name is my name'
echo "$my_name is my name"

执行脚本输出:
$my_name is my name
Charlie is my name

获取字符串长度

str="abcd"
echo ${#str}

执行脚本输出:
4

查找字符串中某字符的位置(下面例子ef两个字母,哪个字母先出现就计算哪个 )

str="abcdefg"
echo `expr index $str ef` #此处为反引号

执行脚本输出:
5

字符串的各种截取方式(复制下面整段自行执行查看,或直接看下文的执行结果)

var=https://blog.doeat.cn/index.php
echo "变量:var=${var}"

printf "\n"
echo '执行命令:echo ${var#*o}'
echo 输出结果:${var#*/}
echo '命令解释:#*/表示删除第一次出现包含/的左边的所有字符'

printf "\n"
command=##*/
echo 执行命令:'echo ${var'$command'}'
#echo 输出结果:${var${command}} #shell没有嵌套变量的这种写法
eval echo 输出结果:'${var'$command'}'
echo '命令解释:##*/表示删除最后出现包含/的左边的所有字符'

printf "\n"
command=%/*
echo 执行命令:'echo ${var'$command'}'
eval echo 输出结果:'${var'$command'}'
echo '命令解释:%/*表示删除最后出现包含/的右边的所有字符'

printf "\n"
command=%%/*
echo 执行命令:'echo ${var'$command'}'
eval echo 输出结果:'${var'$command'}'
echo '命令解释:%%/*表示删除第一次出现包含/的右边的所有字符'

printf "\n"
command=:0:5
echo 执行命令:'echo ${var'$command'}'
eval echo 输出结果:'${var'$command'}'
echo '命令解释:0表示从左边算起第一个字符即截取的开始位置,5表示截取的字符个数,即从第一个字符开始往后截取5个字符'

printf "\n"
command=:7
echo 执行命令:'echo ${var'$command'}'
eval echo 输出结果:'${var'$command'}'
echo '命令解释:7表示从左边算起第八个字符,即从第八个字符开始往后截取到字符串结束位置'


printf "\n"
command=:0-9:5
echo 执行命令:'echo ${var'$command'}'
eval echo 输出结果:'${var'$command'}'
echo '命令解释:0-9表示从右边算起第十个字符位置,5表示截取的字符个数,即从倒数第十个字符位置开始往后截取5个字符'


printf "\n"
command=:0-9
echo 执行命令:'echo ${var'$command'}'
eval echo 输出结果:'${var'$command'}'
echo '命令解释:0-9表示从右边算起第十个字符,即从倒数第十个字符开始往后截取到结束位置'

执行结果:

变量:var=https://blog.doeat.cn/index.php

执行命令:echo ${var#*o}
输出结果:/blog.doeat.cn/index.php
命令解释:#*/表示删除第一次出现包含/的左边的所有字符

执行命令:echo ${var##*/}
输出结果:index.php
命令解释:##*/表示删除最后出现包含/的左边的所有字符

执行命令:echo ${var%/*}
输出结果:https://blog.doeat.cn
命令解释:%/*表示删除最后出现包含/的右边的所有字符

执行命令:echo ${var%%/*}
输出结果:https:
命令解释:%%/*表示删除第一次出现包含/的右边的所有字符

执行命令:echo ${var:0:5}
输出结果:https
命令解释:0表示从左边算起第一个字符即截取的开始位置,5表示截取的字符个数,即从第一个字符开始往后截取5个字符

执行命令:echo ${var:7}
输出结果:/blog.doeat.cn/index.php
命令解释:7表示从左边算起第八个字符,即从第八个字符开始往后截取到字符串结束位置

执行命令:echo ${var:0-9:5}
输出结果:index
命令解释:0-9表示从右边算起第十个字符位置,5表示截取的字符个数,即从倒数第十个字符位置开始往后截取5个字符

执行命令:echo ${var:0-9}
输出结果:index.php
命令解释:0-9表示从右边算起第十个字符,即从倒数第十个字符开始往后截取到结束位置