首页 > 解决方案 > 如何在脚本中以编程方式获取上一个命令输入?

问题描述

我正在研究如何在 Bash 脚本中一般打印失败的命令输入。

所以而不是:

date -q || { echo "date -q"; return 1; }

我想在我的脚本中有类似的东西

date -q || { echo !!; return 1; }

或者

date -q || { fc -ln -1; return 1; }

然后,我可以始终紧凑地使用相同的代码来打印脚本中失败的命令输入。

但是,上述两种尝试echo !!fc -ln -1都不能解决问题

标签: bash

解决方案


你是什​​么意思command input?如果脚本返回非零退出状态,您是否希望脚本打印文字命令?如果是这样,您可以这样做:

comm="date -q"
eval "$comm" || {
    echo "Failed command: $comm"
    return 1
}

如果要对多个命令执行此操作:

## create an array of commands
commands=(
    "date -q"
    "date -w"
    "date -e"
    "date -r"
)

## iterate over the commands
for command in "${commands[@]}"; do
    eval "$command" 2>/dev/null || echo "Failed: $command"
done

推荐阅读