Linux Shell脚本应以#!/bin/bash开头,变量引用需加双引号如"$name",优先使用[[ ]]进行判断,开头启用set -u和set -e提升健壮性,并务必测试验证。

写 Linux Shell 脚本,核心是用命令组合完成自动化任务,不是编程竞赛,重在实用、可读、可维护。
脚本开头必须写 #!/bin/bash
这是“shebang”,告诉系统用哪个解释器执行。不写或写错(比如写成 #!/bin/sh 却用了 bash 特性),脚本可能报错或行为异常。推荐统一用 #!/bin/bash,尤其涉及数组、[[ ]]、let 等功能时。
变量定义和引用要加 $ 和双引号
定义:直接写 name="xiaoming",不加 $;引用:必须写 $name 或更安全的 "$name"。路径含空格、文件名带特殊字符时,不加引号会出错。例如:
- ✓ 正确: cp "$src_file" "/backup/$date/"
- ✗ 危险: cp $src_file /backup/$date/(遇到空格直接中断)
判断文件、目录、退出状态用 [ ] 或 [[ ]],优先用 [[ ]]
[[ ]] 是 bash 内建,支持正则、模式匹配、无需转义,更安全直观。
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
- 检查文件是否存在:[[ -f /etc/passwd ]]
- 判断字符串非空:[[ -n "$USER" ]]
- 匹配版本号:[[ $VERSION =~ ^[0-9]+\.[0-9]+$ ]]
注意:[ ] 左右必须有空格,否则语法错误;[[ ]] 同样需要空格,但不用考虑单词拆分问题。
写完先测试再上线,用 set -u 和 set -e 防低级错误
在脚本开头加上:
- set -u:引用未定义变量时报错,避免拼错变量名导致静默失败
- set -e:任一命令返回非零退出码时立即退出,防止错误被忽略后继续执行
- 调试时可加 set -x 查看每条命令实际执行内容
生产脚本上线前,用真实数据和边界条件跑几遍,别只靠“看起来没问题”。

















