参数替换操作 |
描述 |
示例 |
${var:-value} |
如果变量未定义或为空,则使用默认值value。 |
var=""; echo "${var:-default}" 输出:default |
${var:=value} |
如果变量未定义或为空,则设置变量的值为默认值。 |
var=""; echo "${var:=default}"; echo "$var" 输出:default |
${var:+value} |
如果变量已定义且非空,则使用指定值。 |
var="value"; echo "${var:+default}" 输出:default |
${var:?message} |
如果变量未定义或为空,则输出错误消息。 |
var=""; echo "${var:?Variable is not defined}" 输出:Variable is not defined |
${var#pattern} |
删除变量的前缀匹配的最短模式。 |
例如${var#*.},用于删除变量 var 中第一个.字符及其左边的所有字符,并返回剩余的字符串。 假设有一个变量 var,其值为 file.txt,想要删除第一个. 及其左边的所有字符,得到后缀为 txt 的文件名: var="file.txt" result=${var#*.}echo "Result: $result" 输出: Result: txt |
${var##pattern} |
删除变量的前缀匹配的最长模式。 |
例如:${var##*.},用于删除变量 var 中最后一个.字符及其左边的所有字符,并返回剩余的字符串。 假设有一个变量 var,其值为 file.tar.gz,我们想要删除最后一个 . 及其左边的所有字符,得到文件的最终扩展名 gz: var="file.tar.gz" result=${var##*.} echo "Result: $result" 输出: Result: gz |
${var%pattern} |
删除变量的后缀匹配的最短模式。 |
例如:${var%*.} ,用于删除变量 var 中最后一个.字符及其右边的所有字符,并返回剩余的字符串。 假设有一个变量 var,其值为 file.tar.gz,我们想要删除最后一个 . 及其右边的所有字符,得到文件名 file.tar: var="file.tar.gz" result=${var%*.} echo "Result: $result" 输出: Result: file.tar |
${var%%pattern} |
删除变量的后缀匹配的最长模式。 |
例如:${var%%*.}, 用于删除变量 var 中所有.字符及其右边的所有字符,并返回剩余的字符串。 假设有一个变量 var,其值为 file.tar.gz,我们想要删除所有的 . 及其右边的字符,得到文件名的前缀 file: var="file.tar.gz" result=${var%%.*} echo "Result: $result" 输出: Result: file |
${var/pattern/replacement} |
替换变量中首次出现的模式。 |
var="apple"; echo "${var/a/o}" 输出:opple |
${var//pattern/replacement} |
替换变量中所有匹配的模式。 |
var="apple"; echo "${var/p/o}" 输出:aoole |
${var/#pattern/replacement} |
如果变量的值以模式开头,则替换为指定值。 |
var="apple"; echo "${var/#ap/aa}" 输出:aaple |
${var/%pattern/replacement} |
如果变量的值以模式结尾,则替换为指定值。 |
var="apple"; echo "${var/%le/ll}" 输出:appll |
${#var} |
获取变量值长度 |
length=${#var} |
Shell中参数替换操作
最新推荐文章于 2025-06-04 07:00:00 发布