如何捕获当前命令并将其作为参数发送到脚本中?

时间:2014-05-19 19:08:19

标签: bash shell unix sh

我希望这个问题的标题不会太混淆。

我想要做的是在指定的命令在shell中运行完毕后给自己发送一封电子邮件。为此,我编写了一个简单的脚本,它接受一个参数并向我发送一封带有参数的电子邮件作为消息文本。我的想法是能够以下列方式执行一个我知道需要很长时间的命令:

./commandThatTakesALongTime; ./emailingScript <some argument>

这里显而易见的答案是再次编写命令的名称,并将其作为字符串传递但通常我会有大量参数的命令,所以我更喜欢它自动抓取执行的内容。

我尝试过使用!!:p的各种组合,但这似乎不起作用。有什么提示吗?

ETA:我正在寻找一些我可以传递的东西,基本上只是打印“./commandThatTakesALongTime” - 这样的东西存在吗?我这样做的原因是因为我需要在执行命令后保留环境。

1 个答案:

答案 0 :(得分:3)

写一个这样的脚本:

#!/bin/bash

if "$@" ; then
    echo "$@" | mail -s 'command complete' some@email.address
else
    echo "Command failed!"
fi

将其另存为exec_and_mail并使其可执行。

您将其作为exec_and_mail some_command -with arguments --passed --to it运行。