📅  最后修改于: 2023-12-03 15:05:12.234000             🧑  作者: Mango
在编写 Shell 脚本时,变量替换是非常有用的功能之一。通过变量替换,可以在字符串中插入变量的值,或者对变量进行操作等。本文将为您介绍 Shell 脚本中常见的几种变量替换方式。
${var}
${var}
表示对变量进行引用。例如,有一个变量 $name
,可以通过 ${name}
来引用它的值:
name="John"
echo "My name is ${name}."
输出:
My name is John.
${var:-value}
${var:-value}
表示当变量 $var
不存在或为空时,使用指定的默认值 value
。例如:
echo "My name is ${name:-Tom}."
当 $name
不存在或为空时,输出:
My name is Tom.
${var:=value}
${var:=value}
表示当变量 $var
不存在或为空时,赋值为指定的默认值 value
。例如:
echo "My name is ${name:=Tom}."
当 $name
不存在或为空时,输出:
My name is Tom.
此时变量 $name
的值也被设置为了 Tom
。
${var:+value}
${var:+value}
表示当变量 $var
存在且不为空时,使用指定的值 value
。例如:
name="John"
echo "My name is ${name:+Mr ${name}}."
输出:
My name is Mr John.
当 $name
不存在或为空时,输出:
My name is .
${var#pattern}
${var#pattern}
表示从变量 $var
中删除最短匹配 pattern
的前缀。例如:
path="/usr/local/bin"
echo "${path#*/}"
输出:
usr/local/bin
${var##pattern}
${var##pattern}
表示从变量 $var
中删除最长匹配 pattern
的前缀。例如:
path="/usr/local/bin"
echo "${path##*\/}"
输出:
bin
${var%pattern}
${var%pattern}
表示从变量 $var
中删除最短匹配 pattern
的后缀。例如:
filename="test.sh"
echo "${filename%.sh}"
输出:
test
${var%%pattern}
${var%%pattern}
表示从变量 $var
中删除最长匹配 pattern
的后缀。例如:
filename="test.sh.bak"
echo "${filename%%.*}"
输出:
test
通过以上介绍,相信大家已经了解了 Shell 脚本中常见的变量替换方式。这些操作可以实现一些有趣的功能,例如生成一个时间戳、获取当前脚本的路径等等。在实际工作中,我们可以灵活运用这些方法来提高自己的效率。