为什么反引号用于保存命令输出时会导致EOF错误?

时间:2019-06-17 15:14:58

标签: bash clearcase backticks

我正在遍历一堆透明文件,以查看文本“合并<-”是否不属于ct describe的输出。

我已经尝试过在这一系列的case文件上运行while循环,然后在满足我期望条件的情况下将其附加到另一个文件中。以下是我使用的确切逻辑:

16 FILTER_LIST=cut -f1 -d'@' branchmerge_versions.txt
17 touch temp.txt
18 echo $FILTER_LIST > temp.txt
19 
20 while read t; do
21    isMerged=`cleartool describe t | grep -e "Merge <-"`
22   if [[ "x$isMerged" == "x" ]]; then
23          echo "$t" >> filesToMerge.txt
24   fi
25 done < temp.txt
26

在脚本上运行bash -n返回了以下错误:

filter.sh: line 21: unexpected EOF while looking for matching ``'
filter.sh: line 26: syntax error: unexpected end of file

为什么命令反引号会导致意外的EOF错误?

1 个答案:

答案 0 :(得分:1)

如我在“ What is the difference between $(command) and `command`` in shell programming?”中所述

  

嵌入式命令替换和/或双引号的使用要求使用反斜杠字符进行仔细的转义。
  我们更喜欢$(...)

根据您的情况,尝试使用

isMerged=$(cleartool describe t | grep -e "Merge <-")

但是,如前所述,首先检查输入文件temp.txt的内容。