Linux 是否可以将程序输出用作支架展开的值?

Linux 是否可以将程序输出用作支架展开的值?,linux,bash,brace-expansion,Linux,Bash,Brace Expansion,我是linux新手。我想知道您是否可以使用程序的输出(以逗号分隔的值)作为大括号展开的值 我主要是尝试用触摸来实现这一点,但开始使用echo来测试不同的方法,但运气不好。基本方法是 echo b/{$(find sourceFolder -type f -printf "%f,")} 我也试过cat,但得到了同样的结果。find的输出用作大括号的单个值,而不是多个逗号分隔的值。我跟你核实过了 echo b/{$(find sourceFolder -type f -printf "%f,"),

我是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


我可以用touch在当前工作文件夹中创建文件,我想看看是否可以在另一个文件夹中创建文件。

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

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

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

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

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

这在bash中是不可能的,另一方面,在zsh中,您可以做这样的事情:
echo{$(awk'BEGIN{print 1}')…3}
返回
1 2 3
@chepner,有效点。作为评论添加,更改了我的答案。