使用 sed 命令通过 echo 给出变量

使用 sed 命令通过 echo 给出变量

我们正在尝试使用 sed 命令返回 2 个文件(file1q 和 file1a)的内容 - 一个问答文件。

问题和答案文件相同,每行都有数字:

1
2
3
4
5
6
7
8
9
10

我们试图回显结果,但是回显的是 sed 命令,而不是 sed 命令的结果

这是我们的代码:

#!/bin/bash

#clear screen
clear

#reset score to 0
score=0

#loop over files to find contents
i=1
while [ $i -le 10 ]
do

question="sed -n $i{p} file1q.txt"
answer="sed -n $i{p} file1a.txt"

if [ question == answer ]
then
    echo "Correct"
else
    echo "incorrect"
fi

i=$(( $i + 1 ))

done

正如您所看到的,i = 1,所以 sed 应该从两个文件打印第 1 行...但是,这是我们得到的结果(使用双引号): 输出带双引号的 echo

这就是我们用单引号得到的结果: 输出带单引号的 echo

这就是我们想要的:

无回显输出

答案1

您分配给questionanswer变量命令字符串,而不是命令的输出。看起来您想要的是这个:

question=$(sed -n $i{p} file1q.txt)
answer=$(sed -n $i{p} file1a.txt)

这将运行sed命令并将输出分配给变量。

相关内容