请说明在 Shell 脚本中,对字符串进行截取和拼接分别可以使用哪些方法?
考察说明
考查对 Shell 字符串操作基础语法的掌握程度。
回答思路
- 【回答框架 1】字符串截取:在 Shell 中,可以使用变量子串扩展进行截取,例如 `${var:start:length}` 可以从变量 var 中提取子串,起始位置从 0 开始计数,若不指定 length 则截取到末尾;也支持从末尾倒数的截取,例如 `${var: -n}` 截取后 n 个字符。此外,还可以使用 `expr substr` 命令或 `cut` 命令,但变量子串扩展更常用且效率更高。
- 【回答框架 2】字符串拼接:在 Shell 中,字符串拼接非常简单,直接将两个字符串变量并排写在一起即可,例如 `result="$str1$str2"`。也可以使用 `+=` 运算符追加,如 `str+="suffix"`。在双引号内允许变量和命令替换,而单引号内是字面值。注意在拼接时可能需要根据实际需求添加分隔符或进行变量名边界处理。
- 【关键点 1】变量子串扩展 `${var:start:length}` 是截取字符串的主要方式,支持正向与反向偏移。
- 【关键点 2】拼接字符串可直接并列变量,或用 `+=` 追加。
- 【关键点 3】`cut` 和 `expr substr` 也是截取方法,但子串扩展更高效。
- 【关键点 4】注意双引号与单引号在拼接中的区别。
- 【关键点 5】拼接和处理时留意变量名边界,必要时使用 `${var}` 明确变量名。
- 【易错点 1】在 `expr substr` 中索引从 1 开始,容易与子串扩展的 0 起始混淆。
- 【易错点 2】混淆 `${var:-default}` 与 `${var:start}` 的语法。
- 【易错点 3】在双引号内使用 `$` 时可能产生意外替换。