使用valgrind运行最后一个命令的Bash脚本

时间:2016-02-21 18:38:16

标签: bash valgrind

我对bash缺乏经验。我试图将最后一个运行命令保存为变量,这就是我所拥有的:

#!/bin/bash

prev=$(fc -ln -1)
echo $prev

这不会打印任何内容。保存完最后一个命令后,我计划对此行进行编码:

valgrind --leak-check=full $prev

那么我做错了什么?

2 个答案:

答案 0 :(得分:1)

fc引用当前shell的历史记录。在shell脚本中运行时,它引用该新shell的历史记录。如果使用别名或shell函数,则fc将在当前shell中运行。您也可以获取相同效果的脚本文件。

$ cat go
#!/bin/bash

set -o history
echo a b c
fc -nl -1

$ ./go
a b c
         echo a b c

$ alias zz='fc -nl -1 | tr a-z A-Z'
$ zz
         ALIAS ZZ='FC -NL -1 | TR A-Z A-Z'

答案 1 :(得分:1)

我使用aliases而不是脚本,例如:

alias val='valgrind --leak-check=full'
alias vallast='val $(history 2 | head -1 | cut -d" " -f3-)'

如链接中所述,您可以将这些行添加到.bashrc

顺便说一句,后者也可以执行:

val !!
val !-1 #same

或者,如果您想要valgrind之前运行2个命令的程序:

val !-2

这些历史命令解释为here