首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通信和diff命令上的Bash Shell系统错误

通信和diff命令上的Bash Shell系统错误
EN

Stack Overflow用户
提问于 2017-04-03 13:12:32
回答 1查看 100关注 0票数 1

我试图使用"comm“来比较两个文件,并将它们之间的任何差异保存在第三个文件中,如下所示。

代码语言:javascript
复制
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”,但是我得到了同样的结果,我不知道问题出在哪里。

以下是错误消息:

代码语言:javascript
复制
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"'
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-04-03 13:40:59

这里有几件事要解决,

  1. <(),进程替换是一个bash特性,您很可能需要使用一个正确的#!/bin/bash或依赖于安装bash的发行版来运行它。
  2. 应该没有空格,即使用comm -3 <(sort $updated_file_name".txt") <(sort $updated_file_name_$day$month$year.txt)是正确的方法。

另一个OP的问题是,sort无法打开文件,在文件中出现错误。

建议正确地将变量封装在{}

代码语言:javascript
复制
comm -3 <(sort ${updated_file_name}".txt") <(sort ${updated_file_name}_${day}${month}${year}".txt")
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43185594

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档