shell 字符串

目录

  shell 字符串

  shell 字符串方法

  shell 字符串案例

shell字符串

shell字符串是shell中最常用的变量类型。字符串可以用单引号、双引号、不用引号。

单引号

name='hello world'

单引号字符串的特点:

  1)单引号中的字符都会被原样输出,单引号中的变量是无效的

  2) 单引号中的字符串中不能出现一个单独的单引号,可以成对出现作为字符串的拼接

双引号

name="zsh"
str="hi, are you \"${name}\"? \n"
echo -e $str

输出结果:\n为换行。

# bash ./test.sh
hi, are you "zsh"?

双引号的特点:

  1)双引号里可以使用变量

  2)双引号里可以出现转义字符

shell 字符串方法

字符串拼接

name="zsh"

str="hi, "${name}"!"
str2="hi, ${name}!"
str3="${str} ${str2}"
echo $str3
echo str str2

字符串长度

note:空格也是

例如:获取下列字符串的长度,结果:11

str="hello world"
echo ${#str}

字符串截取

1. 从指定位置截取

1.1 从左到右截取

${str:start:length}

说明:从0开始,str表示被截取的字符串,start表示开始,length表示截取的长度。

例如:从1开始截取4个字符,结果:ello

str="hello world"
echo ${str:1:4}
# result: ello

1.2 从右到左截取

${str:0-start:length}

说明:从右边开始计数时,起始值是1。

列如:

str="hello world"
echo ${str:0-3:2}
#result: rl

2. 从指定字符截取

2.1 使用 # 号截取右边字符

# 号可以截取指定字符右边的所有字符

${str#*chars} 

说明:str表示被截取的字符串,chars表示指定的字符,*通配符表示任意长度的字符串

*chars表示忽略左边所有的字符只截取chars右边的字符。

列如:

str="hello world"
echo ${str#*w}
# result: orld

2.2 使用 % 号截取左边字符

使用 % 号截取指定字符的左边所有字符。

${str%chars*}

列如:

str="hello world"
echo ${str%ll*}
# result: he

字符在字符串的位置

原则:重1开始

例如:查找lw在字符串str中的位置,先出现那个字符就打印那个字符的位置,结果:3

str="hello world"
echo `expr index "$str" lw`

shell 字符串案例

1. shell 字符串倒序

方法一:使用切片

#!/bin/bash

str="abc"

for ((i=${#str};i>=0;i--))
do
    str="${str:$i:1}\c"
    echo -e "$str\n"
done

方法二:使用数组

#!/bin/bash

str="abc"

str=`echo $str | sed 's/./& /g'`
array=($str)
len=${#array[@]}
for ((i=$len - 1;i>=0;i--))
do
    if [ $i == 0  ]
    then
        echo "${array[$i]}"
    else
        echo -e "${array[$i]}\c"
    fi
    # echo -e "${array[$i]}\c"
done

参考:

https://www.cnblogs.com/sinicheveen/p/16502115.html 

posted @ 2022-03-14 16:03  zhuang6  阅读(592)  评论(0编辑  收藏  举报