📜  Shell 脚本 - 变量替换(1)

📅  最后修改于: 2023-12-03 15:05:12.234000             🧑  作者: Mango

Shell 脚本 - 变量替换

在编写 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 脚本中常见的变量替换方式。这些操作可以实现一些有趣的功能,例如生成一个时间戳、获取当前脚本的路径等等。在实际工作中,我们可以灵活运用这些方法来提高自己的效率。