在 中bash,我可以使用进程替换并将进程的输出视为保存在磁盘上的文件:
$ echo <(ls)
/dev/fd/63
$ ls -lAhF <(ls)
lr-x------ 1 root root 64 Sep 17 12:55 /dev/fd/63 -> pipe:[1652825]
Run Code Online (Sandbox Code Playgroud)
不幸的是,dash.
Process Substitution在破折号中模拟的最佳方式是什么?
我不想将输出保存为某个地方的临时文件 ( /tmp/) 然后必须删除它。有没有替代方法?
文件1:
123
234
345
456
Run Code Online (Sandbox Code Playgroud)
文件2:
123
234
343
758
Run Code Online (Sandbox Code Playgroud)
预期输出:文件 3:
TRUE
TRUE
FALSE
FALSE
Run Code Online (Sandbox Code Playgroud)
所以代码应该比较两个文件,如果匹配则打印“TRUE”,否则它应该在新文件中打印“FALSE”。任何人都可以为此提供解决方案吗?
有人问如何将两个命令的输出作为文件传递给另一个命令,他们得到了下面的答案。
( cmd1 | ( cmd2 | ( main_command /dev/fd/3 /dev/fd/4 ) 4<&0 ) 3<&0 )
Run Code Online (Sandbox Code Playgroud)
我需要拆开这个。
假设我有一个文本文件some_file,我希望将它作为输入传递给main_command. main_command将两个文件作为输入。如果我想main_command与some_file命令的输出一起使用cmd2,一种方法是
( cmd2 | ( main_command some_file /dev/fd/4 ) 4<&0 )
Run Code Online (Sandbox Code Playgroud)
main_command some_file /dev/fd/4. 这只是将文件some_file和/dev/fd/4作为参数传递
给main_command.4<&0部分表示stdin将指向文件描述符4。cmd2 |将 的输出cmd2与后面任何内容的输入连接起来。我的问题是:
编辑:我应该说如果我的逻辑是正确的,那么就没有必要回答 1。