bash - 如何在脚本中以编程方式获取上一个命令输入?
问题描述
我正在研究如何在 Bash 脚本中一般打印失败的命令输入。
所以而不是:
date -q || { echo "date -q"; return 1; }
我想在我的脚本中有类似的东西
date -q || { echo !!; return 1; }
或者
date -q || { fc -ln -1; return 1; }
然后,我可以始终紧凑地使用相同的代码来打印脚本中失败的命令输入。
但是,上述两种尝试echo !!
和fc -ln -1
都不能解决问题
解决方案
你是什么意思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
推荐阅读
- qt - Qt findChildren() 函数只返回第一个子对象
- javascript - React 更新兄弟组件
- php - 如何在不将文件另存为 .m3u8 的情况下播放 hls 内容?
- typescript - 打字稿在参数中强制使用别名类型
- sql - 使用 LEAD 函数提取数据减去天数
- here-api - 中国的ADS数据?
- r - 关于在组内和时间方面造成滞后的两个问题
- javascript - 确定一个值是否是完美正方形,如果是,则将其推入一个空数组
- python - 在 python 中创建轮盘赌模拟器
- c# - HttpContext.Current.Session 在调用 Web 方法时抛出了 System.NullReferenceException 类型的异常