gpt4 book ai didi

bash - 是否可以将延迟的命令执行存储在 bash 变量中?

转载 作者:行者123 更新时间:2023-11-29 09:21:30 24 4
gpt4 key购买 nike

我已经看过deferred variable expansion但这似乎对这里的问题不起作用,除非我误解了它。

我想创建一个始终以特定格式计算当前时间的 shell 变量。这是我的第一次尝试。

foo=$(date +'%H-%M-%S')

不幸的是,这将运行命令并将其结果分配给变量 foo。相反,我希望能够说 $foo 并让命令运行并给我结果。


为了给出一个更真实的用例,假设我有一个名为 WriteOutputTo 的(黑盒)程序,它的第一个参数是要写入输出的文件名。我希望能够在 shell 上编写以下内容。

./WriteOutputTo Output_$foo

我意识到这可以通过以下方法完成,但它似乎过于冗长,我想知道是否可以使用短变量代替。

./WriteOutputTo Output_$(date +'%H-%M-%S')

最佳答案

在 bash 中最接近的是将 foo 定义为一个函数:

foo(){ date +'%H-%M-%S'; }

然后你就可以写了

./WriteOutputTo Output_$(foo)

其他 shell 具有实现此目的的机制。例如,在 ksh 中,您可以为 foo 定义“get”纪律函数:

foo.get() { .sh.value=$(date +'%H-%M-%S'); }

此后任何对 $foo 的使用都将返回运行数据命令的结果。

关于bash - 是否可以将延迟的命令执行存储在 bash 变量中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30339419/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com