linux bash脚本:将日期/时间变量设置为自动更新(用于包含在文件名中)

linux bash脚本:将日期/时间变量设置为自动更新(用于包含在文件名中),bash,variables,date,time,auto-update,Bash,Variables,Date,Time,Auto Update,基本上,我有一个文件命名约定的标准格式。它可以分解为: target_dateUTC_timeUTC_tool 因此,例如,如果我在“foo”的目标上运行tcpdump,那么文件将是foo\u dateUTC\u timeUTC\u tcpdump。这很简单,但对每个人来说都是一种持续不断的痛苦。。。所以我尝试创建一个bash脚本,它设置系统变量,如下所示: FILENAME=$TARGET\_$UTCTIME\_$TOOL 然后,我可以在运行时调用变量,如下所示: tcpdump -w $

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

target_dateUTC_timeUTC_tool
因此,例如,如果我在“foo”的目标上运行tcpdump,那么文件将是
foo\u dateUTC\u timeUTC\u tcpdump
。这很简单,但对每个人来说都是一种持续不断的痛苦。。。所以我尝试创建一个bash脚本,它设置系统变量,如下所示:

FILENAME=$TARGET\_$UTCTIME\_$TOOL
然后,我可以在运行时调用变量,如下所示:

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

UTCTIME=$(/bin/date --utc +"%Y%m%d_%H%M%Z")
我真正需要的是创建一个在运行时更新的变量的方法,或者(更可能)另一种方法来对这只猫进行蒙皮

在寻找解决方案的过程中,我遇到了类似的问题。。。喜欢

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

.sh文件通过pastebin发布。

使用函数:

generate_filename() { echo "${1}_$(/bin/date --utc +"%Y%m%d_%H%M%Z")_$2"; }
然后像这样使用它:

tcpdump -w "$(generate_filename foo tcpdump).lpc"
很难让函数自动确定命令名。您可以使用bash history来获取它,并在键入时保存几个字符:

tcpdump -w "$(generate_filename foo !#:0).lpc"

请在以后的文章中使用适当的大小写和格式;它使事情更容易阅读。而且,当有疑问时,最好在脚本中添加一个pastebin link.Yup。这很好地发挥了作用。完全扔掉我写的脚本,用一个简单、优雅的片段替换它。谢谢