linux - 是否可以使用程序输出作为大括号扩展的值?

标签 linux bash brace-expansion

我是 Linux 新手。我想知道您是否可以使用程序的输出(以逗号分隔的值)作为将用于大括号扩展的值。

我主要尝试通过触摸来做到这一点,但开始使用 echo 来测试不同的方法,但没有成功。基本方法是

echo b/{$(find sourceFolder -type f -printf "%f,")}

我也试过 cat 但得到了相同的结果。 find 的输出用作大括号的单个值,而不是多个逗号分隔值。我用

验证了这一点
echo b/{$(find sourceFolder -type f -printf "%f,"),otherValue}

有了这个我得到 2 个输出 b/(用逗号分隔值列表从 find 中找到)和 b/otherValue

我能够在当前工作文件夹中通过触摸创建文件,我想看看是否可以在另一个文件夹中执行此操作。

最佳答案

令人沮丧的是大括号扩展是在之前变量扩展执行的。因此,您需要一种不同的方法。考虑:

find sourceFolder -type f -printf "b/%f\n"

这会将 b/ 放在每个找到的文件名前面,并且不需要大括号扩展。

关于linux - 是否可以使用程序输出作为大括号扩展的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55383004/

相关文章:

linux - resolv.conf 在重新启动时被重写

linux - 包含命令输出的变量的 Shell 脚本打印内容删除换行符

linux - 目录中的文件列表

linux - NodeJS - 在 Linux 上写入文件时出现问题 - 在 Mac 上正常

Bash 不允许在 case 语句中使用 if 语句

bash - 无法通过 ssh 执行 screen : Must be connected to a terminal

bash - sed 不要删除多余的空格

bash - 无法将大括号扩展与 bash 中的参数扩展结合起来

bash - shell 中棘手的大括号扩展

bash shell 程序