linux:将最后一个命令存入变量

时间:2016-11-21 08:30:20

标签: linux bash shell

我准备将最后一个命令存储到一个变量中。

例如:

#last command:
$> cp myfile /to/somewhere
$> last = #some magical command here
$> echo $last 
cp myfile /to/somewhere

我在!!:p命令上尝试了几种方式,它确实给了我最后一个命令,但是我无法将它存储到变量中。

$> last=`!!:p`
$> echo $last
(empty)

任何帮助?

4 个答案:

答案 0 :(得分:8)

尝试some_var=$(fc -nl -1)fc命令可用于检索上一个命令

从评论中加入更好的例子。

答案 1 :(得分:2)

解决方案 given above 在脚本文件中不起作用:

some_var=$(fc -nl -1)

我所做的是使用 trap 选项并将最后一个命令存储在环境变量中,然后调用脚本并访问脚本中的 env 变量。

~/.bashrc中添加这个函数

function process_command() {
  if [ "$BASH_COMMAND" != "$PROMPT_COMMAND" ];then
    export myCMD=$BASH_COMMAND
  fi
}
trap process_command DEBUG

然后在任何脚本或 shell 中的任何地方使用 $myCMD 变量。

答案 2 :(得分:1)

使用!!:p仅打印最后一个命令,以执行您将执行的最后一个命令!!

$ mycmd="$(!!)"
$ sh "$mycmd"

那应该做你想要的......

答案 3 :(得分:0)

变量 $_ 已经这样做了。

#!/bin/bash
ls
lastcommand=$_
echo $lastcommand