本质上,我有一个文件命名约定的标准格式。它分解为:
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发布的,在这里。
使用函数:
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"