基本上,我有一个标准格式的文件命名约定。它分解为:
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")
我真正需要的是一种创建在运行时更新的变量的方法,或者(更有可能)另一种方法来为这只猫设置皮肤。
在寻找解决方案时,我遇到了类似的问题......比如this。
但是,说实话,我很难理解如何将这两种方法结合起来并创建一个简单,可分发的解决方案。
.sh文件通过pastebin here发布。
答案 0 :(得分: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"