shell 如何在输出重定向到的文件名中使用代码块中的变量?

wko9yo5t  于 2023-05-18  发布在  Shell
关注(0)|答案(1)|浏览(224)

我有一个shell脚本,我想使用block of code(docs)捕获它的输出。
此外,我想在我写输出的文件名中使用该代码块的变量的值,不幸的是,这是不起作用的。
我如何重新使用文件名中的代码块中的变量?

最小示例

这是一个虚拟脚本,显示我正在做什么。我有GNU bash, version 5.0.17

{
    v=1
    echo $v
} >> output-$v.log 2>&1

我设置了一个变量,运行一些命令,并希望将stdout和stderr存储在一个文件中,该文件名中包含了变量(在本例中为output-1.log)。
但是,这会写出一个文件output-.log,就好像$v变量不存在一样。

我所尝试的

如果我在代码块后面加上分号;

{
    v=1
    echo $v
}; >> output-$v.log 2>&1

文件output-1.log已创建,但仍为空

gijlo24d

gijlo24d1#

在设置重定向之前初始化变量:

v=1
{
  echo $v
} >> output-$v.log 2>&1

相关问题