我试图使用"comm“来比较两个文件,并将它们之间的任何差异保存在第三个文件中,如下所示。
if [ -e "$updated_file_name_$day$month$year.txt"];
then
comm -3 < (sort $updated_file_name".txt") < (sort $updated_file_name_$day$month$year.txt) > $updated_file_name_$day$month$year_V$i.txt
else
mv $updated_file_name".txt" $updated_file_name_$day$month$year.txt
fi它搜索一个文件的前一个版本,如果它发现这两个文件都应该被排序和比较,则结果将保存在第三个文件中,否则它只会将新文件保存为该日期的原始文件。
我在shell控制台上使用它作为"bash -c‘comm-3命令的其余部分“,并且它工作了,但是由于任何原因它没有在我的脚本上工作,我总是得到错误的语法错误。
我也试着用"diff“代替"comm”,但是我得到了同样的结果,我不知道问题出在哪里。
以下是错误消息:
bash: -c: line 0: syntax error near unexpected token `('
bash: -c: line 0: `diff < (sort $updated_file_name".txt") < (sort $updated_file_name"_"$day$month$year.txt) > $updated_file_name"_"$day$month$year_V$i".txt"'发布于 2017-04-03 13:40:59
这里有几件事要解决,
<(),进程替换是一个bash特性,您很可能需要使用一个正确的#!/bin/bash或依赖于安装bash的发行版来运行它。comm -3 <(sort $updated_file_name".txt") <(sort $updated_file_name_$day$month$year.txt)是正确的方法。另一个OP的问题是,sort无法打开文件,在文件中出现错误。
建议正确地将变量封装在{}中
comm -3 <(sort ${updated_file_name}".txt") <(sort ${updated_file_name}_${day}${month}${year}".txt")https://stackoverflow.com/questions/43185594
复制相似问题