为什么反引号在用于保存命令输出时会导致 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
。
我正在遍历 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
。