是否可以将程序输出用作括号扩展的值?

时间:2019-03-27 17:14:17

标签: linux bash brace-expansion

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

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

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

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

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

我得到2个输出b /(用find逗号分隔值列表)和b / otherValue

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

2 个答案:

答案 0 :(得分:3)

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

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

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

答案 1 :(得分:0)

虽然不能直接使用bash进行此操作,但是可以使用eval获得相同的结果:

$ eval "echo {$(echo 2,3),4}"
2 3 4