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

Why do backticks, when used for saving command output, cause an EOF error?

我正在遍历 clearcase 文件列表以查看文本 "Merge <-" 是否不是 ct describe.

输出的一部分

我已经尝试 运行 在此 clearcase 文件列表上进行 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 错误?

正如我在“What is the difference between $(command) and `command`` in shell programming?

中所解释的

embedded command substitutions and/or the use of double quotes require careful escaping with the backslash character.
We prefer $( ... )

对于您的情况,请尝试使用

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

但是,如评论所述,请先检查输入文件的内容 temp.txt