所以我想要做的是重现以前使用的多行,使用 for 循环并引用历史行。
就像我创建了一个目录,然后 cd 进入目录,然后创建一个文件,然后我删除了所有内容,并且我想在不删除的情况下复制包含文件的目录,就像我想使用 !1 !2 !3 一样,但是如何?
我尝试了这些方法:
for i in {1..3}
do
!$i
done
但我试过调用!用 $! 命令和“!”当然都不起作用。我也试过 fc $i 但什么也没发生。有人能帮我吗?
最佳答案
man bash
在“历史扩展”下说:
History expansion is performed immediately after a complete line is read, before the shell breaks it into words.
这意味着历史扩展发生在变量扩展之前,即您不能使用变量而不是
!
之后的数字。因为外壳仍然不知道它有什么值(value)。此外,非交互式 shell 默认禁用历史扩展。您可以使用
set
更改它,参见例如#!/bin/bash
set -o history
set -H
ls
!-1
关于linux - 如何在 shell 脚本中引用历史行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59920970/