3

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

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

4

2 回答 2

3

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

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

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

于 2019-03-27T17:20:19.917 回答
0

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

$ eval "echo {$(echo 2,3),4}"
2 3 4
于 2019-03-27T17:21:00.467 回答