关于bash变量的使用技巧
2024-07-30 14:07
本文共约 790 字
预计阅读时间约 3 分钟
注:详细可参考 man bash 的 Parameter Expansion 和 Pattern Matching
首先,初始化如下变量:
1VAR="aaabbbccc"常规的引用,可使用花括号,也可以(在不引起歧义的情况下)不使用花括号:
1echo $VAR # aaabbbccc
2echo ${VAR} # aaabbbccc
3echo ${VAR}_123 # aaabbbccc_123(必须使用花括号,否则可能被解析为 VAR_123 变量)缺省值:
1echo ${VAR2} # (空值)
2echo ${VAR2:-xyz} # xyz(返回该缺省字符串)
3echo ${VAR2} # (仍是空值)
4
5echo ${VAR2:=xyz} # xyz(返回该缺省字符串)
6echo ${VAR2} # xyz(已被上一条语句赋值
7
8echo ${VAR3:?abc} # -bash: VAR3: abc(此信息输出到stderr,并导致脚本退出)
9echo ${VAR3:+abc} # (空值,仅当变量为空时才替换为缺省字符串)
10echo ${VAR2:+abc} # abc(因 VAR2 此时非空)切片:
1# 两个数字,分别表示起始字符(从0计)和长度
2echo ${VAR:3} # bbbccc
3echo ${VAR:0:3} # aaa
4echo ${VAR:3:4} # bbbc
5echo ${VAR:5:3} # bcc
6echo ${VAR:3:-1} # bbbcc(至末尾倒数第1个字符结束,不包括该字符)
7echo ${VAR:3:-2} # bbbc(至末尾倒数第2个字符结束,不包括该字符)字符长度:
1echo ${#VAR} # 9去掉前缀:
1echo ${VAR#a} # aabbbccc # 去掉前缀(一个字符)
2echo ${VAR%c} # aaabbbcc # 去掉后缀(一个字符)
3
4echo ${VAR##+(a)} # bbbccc # 去掉前缀(一个或多个字符,##表示尽可能匹配最长)
5echo ${VAR%%+(c)} # aaabbb # 去掉后缀(一个或多个字符,%%表示尽可能匹配最长)替换:
1echo ${VAR/b/x} # aaaxbbccc(替换一次)
2echo ${VAR//b/x} # aaaxxxccc(替换全部)