You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在运行中的Bash脚本内输出未展开变量的脚本调用命令

Bash运行中获取未展开的原始调用命令方案

核心实现方法

利用Bash内置的BASH_COMMAND特殊变量,该变量会存储当前正要执行的原始命令字符串,未经过任何变量、通配符、别名展开处理。你只需要在脚本的最开头捕获该变量的值即可:

#!/bin/bash
# 必须放在脚本所有可执行逻辑的最前面
RAW_COMMAND="$BASH_COMMAND"

# 后续任意位置都可以直接调用输出
echo "原始调用命令为:$RAW_COMMAND"

效果验证

假设你执行的调用命令为:
./test.sh $USER $HOME/*.log
输出结果会直接展示原始输入:
原始调用命令为:./test.sh $USER $HOME/*.log
不会对变量、通配符做任何展开。

注意事项

  • 必须把变量捕获逻辑放在脚本最开头,只要前面多了一行其他可执行命令,BASH_COMMAND的值就会被替换为那行命令的内容,无法拿到脚本的调用命令
  • 该方法仅支持Bash 4.0及以上版本,低版本Bash无法正常使用
  • 相比读历史记录的方案,该方法在脚本启动瞬间就能拿到结果,不需要等待脚本执行完成,也不受历史记录开关的限制

内容的提问来源于stack exchange,提问作者Joerg Peter

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 23:24:03