默认值设定
这块不好记住,直接看表格查找想要的就行。
+--------------------+----------------------+-----------------+-----------------+
| Expression | parameter | parameter | parameter |
| in script: | Set and Not Null | Set But Null | Unset |
+--------------------+----------------------+-----------------+-----------------+
| ${parameter:-word} | substitute parameter | substitute word | substitute word |
| ${parameter-word} | substitute parameter | substitute null | substitute word |
| ${parameter:=word} | substitute parameter | assign word | assign word |
| ${parameter=word} | substitute parameter | substitute null | assign word |
| ${parameter:?word} | substitute parameter | error, exit | error, exit |
| ${parameter?word} | substitute parameter | substitute null | error, exit |
| ${parameter:+word} | substitute word | substitute null | substitute null |
| ${parameter+word} | substitute word | substitute word | substitute null |
+--------------------+----------------------+-----------------+-----------------+
+--------------------+----------------------+-----------------+-----------------+
| Expression | When FOO="world" | When FOO="" | unset FOO |
| in script: | (Set and Not Null) | (Set But Null) | (Unset) |
+--------------------+----------------------+-----------------+-----------------+
| ${FOO:-hello} | world | hello | hello |
| ${FOO-hello} | world | "" | hello |
| ${FOO:=hello} | world | FOO=hello | FOO=hello |
| ${FOO=hello} | world | "" | FOO=hello |
| ${FOO:?hello} | world | error, exit | error, exit |
| ${FOO?hello} | world | "" | error, exit |
| ${FOO:+hello} | hello | "" | "" |
| ${FOO+hello} | hello | hello | "" |
+--------------------+----------------------+-----------------+-----------------+
表格出处链接:https://stackoverflow.com/questions/3601515/how-to-check-if-a-variable-is-set-in-bash
规律:
- "-"表示变量未赋值的时候替换
- "+"表示变量已赋值的时候替换
- "="表示未赋值的时候赋值
- ":"表示变量已赋值但是为空字符串的时候也替换/受影响
- "?"表示未赋值的时候报错,"?"后面的字符串为报错信息
获取长度
${#variableName}
从左侧删除
${var#Pattern} # 从左侧开始删除到第一个pattern匹配(pattern匹配也会删除)
${var##Pattern} # 从左侧开始删除到最后一个pattern匹配(pattern匹配也会删除)
从右侧删除
${var%pattern} # 从右侧开始删除到第一个pattern匹配(pattern匹配也会删除)
${var%%pattern} # 从右侧开始删除到最后一个pattern匹配(pattern匹配也会删除)
字符串内查找替换
${varName/Pattern/Replacement} # 替换从左第一个遇到的pattern
${varName//Pattern/Replacement} # 替换所有的pattern
# 例如
${varName/word1/word2}
${os/Unix/Linux}
字符串index范围提取
${variable:index} # 从字符串index开始提取到末尾
${variable:index:length} # 从字符串index开始提取length个字符
获取名字匹配的变量名
VECH="Bus"
VECH1="Car"
VECH2="Train"
echo "${!VECH*}" # 获取所有VECH开头的变量名,返回数组类型
大小写转换
${varName^} # 首字母大写
${varName^^} # 全部大写
${varName,} # 首字母小写
${varName,,} # 全部小写
参考链接
https://www.cyberciti.biz/tips/bash-shell-parameter-substitution-2.html
网友评论