我准备将最后一个命令存储到一个变量中。
例如:
#last command:
$> cp myfile /to/somewhere
$> last = #some magical command here
$> echo $last
cp myfile /to/somewhere
我在!!:p
命令上尝试了几种方式,它确实给了我最后一个命令,但是我无法将它存储到变量中。
$> last=`!!:p`
$> echo $last
(empty)
任何帮助?
答案 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