Bash 拼接字符串
字符串的拼接是任何一种编程语言的硬性通用要求之一。在 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未设置,则显示消息并退出