首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Shell 字符串操作符实例

字符串操作符

实例脚本

可以使用 sh -v testString.sh 命令来执行如下脚本,查看原始命令及输出内容,为了方便区分命令和内容,其中输出内容以深蓝色显示。

1# 实例脚本

2$ cat testString.sh

3#!/bin/bash

4# 字符串操作符实例

5

6# 判断操作系统,解决 mac下 echo 不支持“-e”参数问题

7if [[ "$(uname)" != "Darwin" ]];then

8    ee="-e"

9fi

10

11# var 变量未声明

12echo ${ee} "\033[36mvar 变量未声明,输出为空: ${var}\033[0m"

13

14# 变量未声明,取默认值

15echo ${ee} "\033[36mvar 变量未声明,则取默认值:${var-daodaotest}\033[0m"

16echo ${ee} "\033[36mvar 变量未声明,则取默认值:${var=daodaotest}\033[0m"

17

18# 变量未声明或取值为空时,取默认值

19# 变量未声明,取默认值

20echo ${ee} "\033[36mvar2 变量未声明,则取默认值:${var2:-daodaotest2}\033[0m"

21echo ${ee} "\033[36mvar2 变量未声明,则取默认值:${var2:=daodaotest2}\033[0m"

22

23# 取值为空时

24var3=

25echo ${ee} "\033[36mvar3 变量声明,但值为空时,取默认值:${var3:-daodaotest3}\033[0m"

26echo ${ee} "\033[36mvar3 变量声明,但值为空时,取默认值:${var3:=daodaotest3}\033[0m"

27

28# 变量未声明,值为空;声明了为设置值

29echo ${ee} "\033[36mvar4 变量未声明,值为空:${var4+daodaotest4}\033[0m"

30var5=daodaotest5

31echo ${ee} "\033[36mvar5 变量声明,取设置值:${var5+daodaotest}\033[0m"

32

33# 变量未声明或取值为空时,打印设置信息且程序退出

34var6=daodaotest6

35echo ${ee} "\033[36mvar6 变量声明且取值,不打印设置信息:${var6?变量未声明或取值为空}\033[0m"

36

37# 变量未声明或取值为空时,打印设置信息且程序退出

38# 为了脚本继续运行注释掉

39#echo ${ee} "\033[36mvar7 变量未声明,打印设置信息:${var7:?变量未声明}\033[0m"

40#var8=

41#echo ${ee} "\033[36mvar8 取值为空,打印设置信息:${var7:?变量取值为空}\033[0m"

42

43# 通过前缀字符匹配声明过的变量名

44x1=1

45x2=2

46x3=3

47echo ${ee} "\033[36m通过前缀字符匹配声明过的变量名:${!x*}\033[0m"

48echo ${ee} "\033[36m通过前缀字符匹配声明过的变量名:${!x@}\033[0m"

49

50url="https://www.toutiao.com/i6820392125645980174"

51## 字符串长度

52echo ${ee} "\033[36m字符串内容:${url}\033[0m"

53echo ${ee} "\033[36m字符串长度:${#url}\033[0m"

54

55## 字符串截取

56# 字符串位置截取

57echo ${ee} "\033[36m从左边指定位置开始,截取后面所有字符串:${url:8}\033[0m"

58echo ${ee} "\033[36m从左边指定位置开始,截取指定长度字符串:${url:8:15}\033[0m"

59echo ${ee} "\033[36m从右边指定位置长度开始,截取后面所有字符串(注意“:”右边有空格):${url: -20}\033[0m"

60echo ${ee} "\033[36m从右边指定位置长度开始,截取后面所有字符串(同上,推荐):${url:0-20}\033[0m"

61echo ${ee} "\033[36m从右边指定位置长度开始,截取后面所有字符串(同上,推荐):${url:(-20)}\033[0m"

62echo ${ee} "\033[36m从右边指定位置开始,截取指定长度字符串(注意“:”右边有空格):${url:0-36:15}\033[0m"

63echo ${ee} "\033[36m从右边指定位置开始,截取指定长度字符串(同上,推荐):${url:0-36:15}\033[0m"

64echo ${ee} "\033[36m从右边指定位置开始,截取指定长度字符串(同上,推荐):${url:(-36):15}\033[0m"

65

66## 截取不匹配的字符串,即删除匹配的字符串

67echo ${ee} "\033[36m从右边开始,删除最短匹配字符串:${url#*/}\033[0m"

68echo ${ee} "\033[36m从右边开始,删除最长匹配字符串:${url##*/}\033[0m"

69

70echo ${ee} "\033[36m从左边开始,删除最短匹配字符串:${url%/*}\033[0m"

71echo ${ee} "\033[36m从左边开始,删除最长匹配字符串:${url%%/*}\033[0m"

72

73## 匹配项替换

74echo ${ee} "\033[36m从右边开始,替换第一次出现匹配项:${url/\//#}\033[0m"

75echo ${ee} "\033[36m替换所有匹配项:${url//\//#}\033[0m"

76

77echo ${ee} "\033[36m替换开头匹配字符串:${url/#https/http}\033[0m"

78echo ${ee} "\033[36m替换结尾匹配字符串:${url/%i6820392125645980174/daodaotest}\033[0m"

79

80param=daodaotest

81# macOS zsh 不支持

82echo ${ee} "\033[36m开头第一个小写字母转换为大写:${param^}\033[0m"

83echo ${ee} "\033[36m所有小写字母转换为大写:${param^^}\033[0m"

84

85param=DAODAOTEST

86# macOS zsh 不支持

87echo ${ee} "\033[36m开头第一个大写字母转换为小写:${param,}\033[0m"

88echo ${ee} "\033[36m所有大写字母转换为小写:${param,,}\033[0m"

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20200501A08WP400?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券