无法回显上次在 .sh 脚本中执行

Unable to echo last executed within .sh script

使用以下

cmd=$(uname -a)

printf "["!:0"]"

给我

[cmd1=Linux localhost.localdomain 2.6.32-300.10.1.el5uek #1 SMP Wed Feb 22 17:37:40 EST 2012 x86_64 x86_64 x86_64 GNU/Linux]

但什么时候在 test.sh

完成
#!/bin/bash
output=$(uname -a)


printf "["!:0"]"

我得到

[!:0]

谢谢。

如果您需要在 bash (v4+) 脚本中执行之前的命令,

#!/bin/bash -i
# -i: interactive mode, enable history inside script
set -o history  # enable history, for old bash versions

cmd=$(uname -a)
history | sed -n 'x;${s/ *[0-9]\+ *\(\S*\)//p}'  # print the line before last history entry after removing index