我了解以下错误是由于!
用于历史记录扩展而导致的:
$ echo "Hello!Tim"
bash: !Tim: event not found
但是,如果将命令放入脚本中并运行该脚本,则不会出现问题:
$ cat myscript
echo "Hello!Tim"
$ bash myscript
Hello!Tim
这是为什么?bash手册中是否提到了原因?
1
简单地说,这是个好问题。做得太好了!
—
通配符
根据我在这里阅读的内容:gnu.org/software/bash/manual/html_node/History-Interaction.html我相信您需要使用某种
—
jesse_b
shopt
修饰符才能使其在脚本中正常工作。我知道这并不是您要找的答案。
用例是什么?您将运行哪种脚本来扩展以前的历史记录?还是会扩展脚本中的先前命令?
—
杰夫·谢勒
@JeffSchaller,使用正数的脚本中的数字历史记录扩展听起来确实是个坏主意,但我可以轻松想象出
—
通配符
!!
or或!-2
(负/相对历史数字)或类似用例的用法。通常,可以通过其他方法更好地解决它们,但是对于外壳如何工作(以及何时/不需要逃避惊叹!)仍然是一个很好的问题。