bash – 如何在当前shell中执行命令的输出?
我很清楚源(aka。)实用程序,它将从文件中获取内容并在当前shell中执行它们。
现在,我将一些文本转换为shell命令,然后运行它们,如下所示: $ ls | sed ... | sh ls只是一个随机的例子,原始文本可以是任何东西。 sed也是,只是一个转换文本的例子。有趣的位是sh。我管任何我得到的嘘,它运行它。 我的问题是,这意味着启动一个新的子shell。我宁愿让命令在我当前的shell中运行。像我可以做的源一些文件,如果我有一个文本文件中的命令。 我不想创建一个临时文件,因为感觉脏。 或者,我想开始我的子shell与我当前的shell完全相同的特性。 更新 好的,使用backtick的解决方案肯定工作,但我经常需要这样做,而我检查和更改输出,所以我更喜欢如果有一种方法来管道的结果到最后的东西。 悲伤的更新 啊,/ 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' | ack -v '.doc$' | perl -pe 's/^((.*).doc)$/$1 $2.doc/i' | xargs -L1 git mv 所以,当我运行前,它会立即退出,没有任何反应。 $ ls | sed ... | source /dev/stdin 更新:这在bash 4.0,以及tcsh和破折号(如果你更改源。)。显然这是bugs在bash 3.2。从bash 4.0 release notes:
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- bootstrap基础引用文件
- 【图书】迈向Angular2:基于TypeScript的高性能SPA框架
- 有人能解释一下Twitter Bootstrap插件中使用的这个javascri
- [原创]webservice 学习笔记,axis2传递简单对象,非stub方式
- scala – 如何处理’配置错误[无法连接到数据库[…]]’
- shell简介
- AXIS调用jws发布的webservice出现Cannot find dispatch met
- 如何使用AngularJS UI Bootstrap工具提示显示表单输入错误?
- 使用NgFor在angular2中生成子组件不起作用
- 如何将Angular 2 RC 1(或更早版本)表格迁移到Angular 2 RC