我想比较2条命令的输出
来自diff的输出 cat file1 和 cat file2
我发现解决方法是
diff <(cat file1) <(cat file2)
但是
如果我将其放入外壳脚本中 括号无法识别,因为它意味着在shell脚本中调用sub-shell。(我想知道我所知道的是否正确)
#!bin/bash
diff <(cat $1) <(cat $2)
意外令牌'('附近的语法错误
在shell脚本中是否有解决方案使用需要括号的命令?
我尝试过
diff `<(cat $1) <(cat $2)`
diff `<(cat $1)` `<(cat $2)`
diff "<(cat $1) <(cat $2)"
diff <`(`cat $1`)` <`(`cat $2`)`
但以上方法均无效
我曾经将输出转储到其他文件并比较这些文件
cat $1 > out1.txt
cat $2 > out2.txt
diff -b out1.txt out2.txt
我知道这可行,但是我只是想知道是否有任何方法无需事先将输出转储到文件中
答案 0 :(得分:1)
如果编写包含bash
命令的脚本,则需要使用bash
而不是sh
运行它。 (考虑:您希望rm scriptfile
运行文件中包含的bash命令吗?)
如果您想要更便携的东西,可以显式使用FIFO(特别是mkfifo
命令):
#!/bin/sh
mkfifo fifo1 fifo2
cat "$1" >>fifo1 &
cat "$2" >>fifo2 &
diff -b fifo1 fifo2
rm fifo1 fifo2
答案 1 :(得分:0)
我尝试了这个test.sh并获得了正确的输出。
#! /bin/bash
diff <(cat $1) <(cat $2)