我有两步bash命令:
L=`wc -l testfile | cut -d' ' -f1`
myprogram testfile $L testfile.out
长话短说,myprogram
需要将行计数作为输入。
我希望将其合并为一行。
这样做不有效,因为使用重定向|
到-
会将stdout流作为文件传递,而不是字符串。
wc -l testfile | cut -d' ' -f1 | myprogram testfile - testfile.out
有没有办法将它合并为一行?
答案 0 :(得分:5)
使用流程替换:
myprogram testfile $(wc -l < testfile) testfile.out
^^^^^^^^^^^^^^^^^^^
这样,wc -l < testfile
与程序调用一起进行评估,并且两个命令组合在一起。
注意wc -l < file
只返回数字,因此您无需执行cut
或任何其他操作来清理输出。