在 Bash 中,${}
是一种参数扩展的语法结构,具有以下主要用法:
一、变量替换
可以用来获取变量的值。
name="Alice"
echo "${name}"
# 输出:Alice
二、字符串操作
-
提取子字符串:
${var:start:length}
:从变量var
中提取从start
位置开始,长度为length
的子字符串。
str="Hello World" echo "${str:6:5}" # 输出:World
-
删除前缀或后缀:
${var#pattern}
:从变量var
的开头删除最短匹配的pattern
。${var##pattern}
:从变量var
的开头删除最长匹配的pattern
。${var%pattern}
:从变量var
的末尾删除最短匹配的pattern
。${var%%pattern}
:从变量var
的末尾删除最长匹配的pattern
。
path="/home/user/documents/file.txt" echo "${path##*/}" # 输出:file.txt echo "${path%/*}" # 输出:/home/user/documents
三、变量默认值和替换
-
默认值设置:
${var:-default}
:如果变量var
已设置且非空,则返回其值;否则返回default
。
var1="" var2="value" echo "${var1:-default_value}" # 输出:default_value echo "${var2:-default_value}" # 输出:value
-
强制替换为默认值:
${var:=default}
:如果变量var
已设置且非空,则返回其值;否则将其设置为default
并返回该值。
var3="" echo "${var3:=new_value}" # 输出:new_value echo "var3 is now: $var3" # 输出:var3 is now: new_value
四、变量替换和错误处理
-
替换并检查是否为空:
${var:+replacement}
:如果变量var
已设置且非空,则返回replacement
;否则返回空字符串。
var4="" var5="value" echo "${var4:+replacement_value}" # 输出:空行 echo "${var5:+replacement_value}" # 输出:replacement_value
-
错误处理:
${var?error_message}
:如果变量var
已设置且非空,则返回其值;否则打印error_message
并退出脚本。
var6="" echo "${var6?Variable is not set}" # 脚本会退出并显示错误消息:Variable is not set
总之,${}
在 Bash 中是非常强大的语法结构,可以用于各种变量操作和字符串处理任务。