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

自定义Bash重复命令函数执行失败,提示command not found

解决Bash函数中执行历史命令的问题

你的问题出在Bash历史扩展的执行时机:!-x这种历史扩展语法是在命令行输入的早期解析阶段处理的,而函数中变量替换($i)是在之后才发生的,所以"!-$i"会被当成普通字符串,Bash会把它当作命令去查找,自然报"command not found"。

改用fc命令就能解决这个问题,fc是Bash专门用来操作历史命令的工具,适合在脚本/函数中使用。修改后的函数如下:

rep() {
    # 检查参数是否为正整数
    if ! [[ $1 =~ ^[1-9][0-9]*$ ]]; then
        echo "请传入一个正整数参数"
        return 1
    fi
    for i in $(seq 1 "$1"); do
        fc -s -"$i"
    done
}

关键说明:

  • fc -s -$i:-s表示重新执行指定的历史命令,-$i对应倒数第i条命令,和你想要的!-$i效果完全一致。
  • 参数检查:避免传入非正整数导致错误,提升函数健壮性。

测试时直接执行rep 3,就能依次重复执行倒数第1、2、3条命令。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 01:47:11