2

本质上,我有一个文件命名约定的标准格式。它分解为:

target_dateUTC_timeUTC_tool

因此,例如,如果我在 'foo' 的目标上运行 tcpdump,那么文件将是foo_dateUTC_timeUTC_tcpdump. 很简单,但是每个人不断(并且始终如一地)输入都很痛苦......所以我尝试创建一个 bash 脚本来设置系统变量,如下所示:

FILENAME=$TARGET\_$UTCTIME\_$TOOL

然后,我可以在运行时调用该变量,如下所示:

tcpdump -w $FILENAME.lpc

所有这些都像冠军一样工作。我有一个菜单驱动的 .sh,它为用户提供了查看当前变量以及设置它们的选项……文件生成轻而易举。不幸的是,通过设置日期/时间变量,它被锁定为创建时的值(自然)。我像这样设置变量:

UTCTIME=$(/bin/date --utc +"%Y%m%d_%H%M%Z")

我真正需要的是一种创建在运行时更新的变量的方法,或者(更有可能)另一种给这只猫皮肤的方法。

在寻找解决方案时,我遇到了类似的问题......就像这样

但是,老实说,我对如何结合这两种方法并创建一个简单的、可分发的解决方案感到困惑。

.sh 文件通过 pastebin 发布,在这里

4

1 回答 1

1

使用一个函数:

generate_filename() { echo "${1}_$(/bin/date --utc +"%Y%m%d_%H%M%Z")_$2"; }

并像这样使用它:

tcpdump -w "$(generate_filename foo tcpdump).lpc"

很难获得自动确定命令名称的功能。您可以使用 bash 历史记录来获取它并保存几个字符输入:

tcpdump -w "$(generate_filename foo !#:0).lpc"
于 2012-11-28T15:52:27.650 回答