如何在当前shell中执行命令的输出?
我很了解source(aka .)实用程序,它将从文件中获取内容并在当前shell中执行它们。 现在,我将一些文本转换为shell命令,然后运行它们,如下所示: $ ls | sed ... | sh ls只是一个随机的例子,原始文本可以是任何东西。sed也只是一个转换文本的示例。有趣的是sh。我用管道输送我所得到的一切sh,然后运行它。 我的问题是,这意味着启动一个新的子外壳。我宁愿命令在我当前的shell中运行。就像我能够使用source some-file,如果我在文本文件中包含命令。 我不想创建一个临时文件,因为感觉很脏。 另外,我想以与当前shell完全相同的特性启动子shell。 更新 好的,使用反引号的解决方案当然可以工作,但是我经常需要在检查和更改输出时执行此操作,因此我更希望是否有一种将结果最终传递给某些对象的方法。 悲伤的更新 嗯,这/dev/stdin东西看起来很漂亮,但是在更复杂的情况下,它没有用。 所以,我有这个: find . -type f -iname '*.doc' | ack -v '\.doc$' | perl -pe 's/^((.*)\.doc)$/git mv -f $1 $2.doc/i' | source /dev/stdin 这样可以确保所有.doc文件的扩展名都小写。 顺便说一句,可以使用进行处理xargs,但这不重要。 find . -type f -iname '*.doc' | …