我正在尝试做以下几件事:
uname>>1.txt | echo #####>>1.txt | echo uname>>1.txt &要获得以下输出:
uname
## ## ## ## ##Linux (或其他任何名称)
但是我得到的输出却是: uname
但是,如果我只尝试:
uname>>1.txt | echo uname>>1.txt &然后,我会得到以下输出:
uname
Linux 想知道这种管道重定向是否有一些限制?
=======================================================================
我将从tcl脚本中调用这个shell命令。实际上,在tcl脚本中有一个正在执行的命令列表,输出需要按以下方式格式化<->
我想在后台运行它们以减少执行时间,因为这些命令的输出彼此不相关。
我认为()中的命令会将格式化后的输出作为后台进程输出到1.txt。
你能推荐另一种方法吗?
发布于 2012-11-06 18:43:42
这里有很多问题。
echo没有任何意义。你想要的是
(echo uname > 1.txt; echo ------ >>1.txt; uname >>1.txt)
更新(根据对问题的评论和更改)
您将继续使用此命令调用本质上未定义的行为:
uname>>1.txt | echo uname>>1.txt &
来自uname的管道是无效的,因为一旦重定向了输出,就没有什么可以通过管道了。指向echo的管道无效,因为不能从标准输入中读取。哪个uname或echo命令最先将其输出打印到文件1.txt中,这里等待抓取。这显然是你想要的:
bash -c 'echo uname >> 1.txt;echo - >> 1.txt;uname >> 1.txt‘
请注意bash的-c选项。这告诉bash -c后面的参数是一个包含外壳命令的字符串。
https://stackoverflow.com/questions/13249069
复制相似问题