阅读(3581) (18)

Bash 拼接字符串

2020-06-18 15:04:06 更新

字符串的拼接是任何一种编程语言的硬性通用要求之一。在 shell 中字符串的拼接十分简单,但仍然需要注意细节上的处理。

基本语法

str3="${str1}${str2}

注:
- {}作用为帮助解释器识别变量边界。
- 在此出于严谨考虑,最好应养成随手添加{}的习惯,避免疏忽导致脚本执行效果未达到您的期望。

示例

#!/bin/bash


str1="welcome to"


str2=" W3Cschool."


str3="${str1}${str2}"
str4="Hello user,${str1}${str2}"


echo $str3
echo $str4

注:
- 在此出于严谨考虑,最好应养成随手添加 " "的习惯,避免疏忽导致脚本执行效果未达到您的期望。
- 在代码第8行,若不以 " "将整个语句引起,解释器在遇到空格时将会视为字符串结束,空格之后的内容将作为其他变量或命令进行解析。

执行后得到以下结果:

welcome to W3Cschool.
Hello user,welcome to W3Cschool.

支撑扩展
请参阅:支撑扩展

echo {A,B}.js
{A,B}   与...一样 A B
{A,B}.js    与...一样 A.js B.js
{1..5}  与...一样 1 2 3 4 5

外壳执行
请参阅:命令替换

echo "I'm in $(PWD)"
## Same
echo "I'm in `pwd`"

Bash 参数扩展

句法

${FOO%suffix}   删除后缀
${FOO#prefix}   删除前缀
${FOO%%suffix}  去除长后缀
${FOO##prefix}  删除长前缀
${FOO/from/to}  替换第一场比赛
${FOO//from/to} 全部替换
${FOO/%from/to} 替换后缀
${FOO/#from/to} 替换前缀

子串

${FOO:0:3}  子串(位置,长度)
${FOO:(-3):3}   右边的子串

长度

${#FOO} 的长度 $FOO

默认值

${FOO:-val} $FOO, 或者val如果未设置
${FOO:=val} 如果未设置$FOO,val则设置为
${FOO:+val} val如果$FOO设置
${FOO:?message} 如果$FOO未设置,则显示消息并退出