bash 中的差异命令
Diff command in bash
每次我 运行 以下 bash 命令时,我都会收到错误消息:
代码如下:
sort -b ./tests/out/$scenario > $studentFile
sort -b ./tests/out/$scenario > $profFile
$(diff $studentFile $profFile)
if [ $? -eq 0 ]
then
echo "Files are equal!"
else
echo "Files are different!"
fi
这是错误:
./test.sh: 2c2: not found
我基本上想对两个文件进行排序,然后检查它们是否相等。我不明白的是这个错误意味着什么以及我如何摆脱它。任何帮助将不胜感激。
谢谢!
简答:使用
diff $studentFile $profFile
而不是:
$(diff $studentFile $profFile)
长答案:
diff $studentFile $profFile
将提供多行输出,在您的示例中,第一行是“2c2”。如果将 diff 命令包含在 $() 中,则此表达式的结果是一个由所有行“2c2 ...”串联而成的字符串。在您的脚本中,此结果由 bash 作为新命令执行,结果为“未找到命令:2c2”。
比较,举例:
$(diff $studentFile $profFile)
和:
echo $(diff $studentFile $profFile)
*** 附录 ***
if diff $studentFile $profFile > /dev/null 2>&1
then
echo "equal files"
else
echo "different files"
fi
是达到预期结果的一种可能方式。
你的命令
$(diff $studentFile $profFile)
对两个文件执行运行diff
命令的结果。您的 shell 抱怨的 2c2
可能是 diff
.
输出的第一个词
我假设您只想查看 diff
:
的输出
diff $studentFile $profFile
如果要在脚本中比较文件是否相等,请考虑使用 cmp
:
if cmp -s $studentFile $profFile; then
# Handle file that are equal
else
# Handle files that are different
fi
diff
实用程序用于检查文件之间的差异,而 cmp
更适合于简单地测试文件是否不同(例如,在脚本中)。
对于更特殊的情况,可以使用 comm
实用程序来比较已排序文件中的行。
每次我 运行 以下 bash 命令时,我都会收到错误消息:
代码如下:
sort -b ./tests/out/$scenario > $studentFile
sort -b ./tests/out/$scenario > $profFile
$(diff $studentFile $profFile)
if [ $? -eq 0 ]
then
echo "Files are equal!"
else
echo "Files are different!"
fi
这是错误:
./test.sh: 2c2: not found
我基本上想对两个文件进行排序,然后检查它们是否相等。我不明白的是这个错误意味着什么以及我如何摆脱它。任何帮助将不胜感激。
谢谢!
简答:使用
diff $studentFile $profFile
而不是:
$(diff $studentFile $profFile)
长答案:
diff $studentFile $profFile
将提供多行输出,在您的示例中,第一行是“2c2”。如果将 diff 命令包含在 $() 中,则此表达式的结果是一个由所有行“2c2 ...”串联而成的字符串。在您的脚本中,此结果由 bash 作为新命令执行,结果为“未找到命令:2c2”。
比较,举例:
$(diff $studentFile $profFile)
和:
echo $(diff $studentFile $profFile)
*** 附录 ***
if diff $studentFile $profFile > /dev/null 2>&1
then
echo "equal files"
else
echo "different files"
fi
是达到预期结果的一种可能方式。
你的命令
$(diff $studentFile $profFile)
对两个文件执行运行diff
命令的结果。您的 shell 抱怨的 2c2
可能是 diff
.
我假设您只想查看 diff
:
diff $studentFile $profFile
如果要在脚本中比较文件是否相等,请考虑使用 cmp
:
if cmp -s $studentFile $profFile; then
# Handle file that are equal
else
# Handle files that are different
fi
diff
实用程序用于检查文件之间的差异,而 cmp
更适合于简单地测试文件是否不同(例如,在脚本中)。
对于更特殊的情况,可以使用 comm
实用程序来比较已排序文件中的行。