eval-trap-shift
Shell内置与杂项-eval-trap-shift / trap / shift 🛠️ — Shell 高级用法
作用
eval 将字符串作为 Shell 命令二次解析执行;trap 捕获信号或事件执行自定义操作;shift 移动位置参数(左移丢弃 $1)。三者都是 Shell 脚本中常用的高级控制命令。
eval
1 | eval [参数...] |
将参数拼接为字符串并作为 Shell 命令执行(二次解析)。适用于构造动态命令或访问间接变量。注意安全风险,不要对不受信任的输入使用 eval。
trap
1 | trap [操作] 信号... |
捕获指定信号并执行操作。常用信号:INT(Ctrl+C)、TERM(终止)、EXIT(退出)、ERR(命令错误)。trap 'rm -f /tmp/tempfile' EXIT 在脚本退出时清理临时文件。trap '' INT 忽略 Ctrl+C。
shift
1 | shift [N] |
将位置参数左移 N 位(丢弃前 N 个参数,$1 变为原来的第 N+1 个参数)。默认 N=1。在脚本中遍历所有参数时常用:while [ $# -gt 0 ]; do ...; shift; done。
示例
1 | CMD="ls -la" # 构造命令字符串 |
⚠️ eval 注意安全风险。
来源:菜鸟教程