gre*_*man 45 shell io-redirection
通常你会写:
diff file1 file2
Run Code Online (Sandbox Code Playgroud)
但是我想比较一个文件和命令的输出(在这里我使命令变得简单):
diff file1 <(cat file2 | sort)
Run Code Online (Sandbox Code Playgroud)
好的,当我在 shell 提示符下手动输入时,这项工作有效,但是当我在 shell 脚本中放入完全相同的行,然后运行该脚本时,出现错误。
所以,问题是——如何正确地做到这一点?
当然,我想避免将输出写入临时文件。
Cal*_*leb 51
我怀疑你的脚本和你的 shell 是不同的。也许你#!/bin/sh
在脚本的顶部作为解释器,但你正在使用bash
你的个人 shell。您可以通过运行echo $SHELL
.
执行此操作的一种更简单的方法是使用管道重定向,而不是您提供的文件读取运算符。符号“-”是用于读取 STDIN 的标准命名法,可以经常用作参数列表中文件名的替代:
cat file2 | sort | diff file1 -
Run Code Online (Sandbox Code Playgroud)
或者避免无用的使用 cat:
sort < file2 | diff file1 -
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
27712 次 |
最近记录: |