当前位置:首页 > 服务器技术 > 正文

玩转Shell变量替换(小白也能轻松掌握的Linux命令行技巧)

在 Linux 系统中,Shell 脚本是自动化任务和系统管理的强大工具。而 变量替换 是 Shell 编程中最基础也最实用的功能之一。无论你是刚接触 Linux 的新手,还是想提升脚本编写效率的中级用户,掌握这些技巧都能让你事半功倍。

玩转Shell变量替换(小白也能轻松掌握的Linux命令行技巧) Linux Shell变量替换 Shell脚本技巧 环境变量使用 Bash字符串操作 第1张

什么是 Shell 变量替换?

简单来说,变量替换 就是在 Shell 脚本或命令行中,用变量的值来替代变量名本身。例如:

$ name="Alice"$ echo "Hello, $name!"# 输出:Hello, Alice!

在这个例子中,$name 被替换成它的值 Alice。这就是最基本的变量替换。

常用变量替换技巧

1. 默认值替换:${var:-default}

如果变量未定义或为空,就使用默认值:

$ unset username$ echo "欢迎你,${username:-访客}!"# 输出:欢迎你,访客!$ username="Bob"$ echo "欢迎你,${username:-访客}!"# 输出:欢迎你,Bob!

这个技巧常用于脚本中设置可选参数的默认值,非常实用。

2. 赋默认值并赋值:${var:=default}

与上面类似,但会将默认值永久赋给变量(如果原变量为空):

$ unset port$ echo "端口:${port:=8080}"# 输出:端口:8080$ echo $port# 输出:8080(变量已被赋值)

3. 错误提示:${var:?错误信息}

如果变量未设置,就显示错误信息并退出脚本:

$ unset config_file$ echo "配置文件:${config_file:?未指定配置文件路径!}"# 输出:bash: config_file: 未指定配置文件路径!

这在关键参数缺失时能快速发现问题,是编写健壮脚本的好习惯。

4. 字符串截取与替换

Bash 还支持强大的字符串操作:

  • ${var#pattern}:从开头删除最短匹配
  • ${var##pattern}:从开头删除最长匹配
  • ${var%pattern}:从结尾删除最短匹配
  • ${var%%pattern}:从结尾删除最长匹配
  • ${var/pattern/replacement}:替换第一个匹配项
  • ${var//pattern/replacement}:替换所有匹配项
$ filepath="/home/user/documents/report.pdf"$ echo "文件名:${filepath##*/}"# 输出:文件名:report.pdf$ echo "目录:${filepath%/*}"# 输出:目录:/home/user/documents$ echo "改为.txt:${filepath/.pdf/.txt}"# 输出:改为.txt:/home/user/documents/report.txt

实战小例子:安全备份脚本

结合上述技巧,我们可以写一个简单的备份脚本:

#!/bin/bashSOURCE_DIR=${1:?请提供要备份的目录路径}BACKUP_DIR=${2:-/backup}DATE=$(date +%Y%m%d)mkdir -p "$BACKUP_DIR"tar -czf "$BACKUP_DIR/backup_$DATE.tar.gz" "$SOURCE_DIR"echo "备份完成:$BACKUP_DIR/backup_$DATE.tar.gz"

运行方式:
./backup.sh /home/user → 备份到默认 /backup 目录
./backup.sh → 报错提示缺少参数

总结

掌握 Linux Shell 变量替换Shell 脚本技巧环境变量使用Bash 字符串操作,不仅能让你写出更简洁高效的脚本,还能大幅提升日常运维效率。建议多在终端中动手尝试,把这些语法变成你的“肌肉记忆”。

现在,就打开你的终端,试试这些技巧吧!