我正在尝试找到与此类似的问题的解决方案:
#command_A
A_output_Line_1
A_output_Line_2
A_output_Line_3
#command_B
B_output_Line_1
B_output_Line_2
现在我需要比较 A_output_Line_2 和 B_output_Line_1,如果它们相等则回显“正确”,否则回显“不正确”。
我想最简单的方法是在某个变量中复制一行输出,然后在执行这两个命令后,简单地比较变量并回显一些东西。 我需要在 bash 脚本中实现这一点,任何有关如何将特定行的输出存储在变量中的信息都将帮助我将各个部分组合在一起。 此外,如果有人不仅能告诉我如何复制/存储一行,而且可能只是一个单词或序列,那就太好了:第 1 行,字节 4-12,像字符串一样存储在变量中。
我不是一个完全的初学者,但也不是高级 linux bash 用户。提前感谢任何帮助,抱歉英语不好!
最佳答案
更简单的方法可能是使用 diff
,不是吗?
类似于:
command_A > command_A.output
command_B > command_B.output
diff command_A.output command_B.output
这将适用于比较多个字符串。
但是,既然您想了解单行(以及行中的单词),这里有一些提示:
# first line of output of command_A
command_A | head -n 1
-n 1
选项说只使用第一行(我认为默认是 10)
# second line of output of command_A
command_A | head -n 2 | tail -n 1
这将获取 command_A
输出的前两行,然后是这两行的最后一行。快乐时光:)
您现在可以将此信息存储在变量中:
export output_A=`command_A | head -n 2 | tail -n 1`
export output_B=`command_B | head -n 1`
然后比较一下:
if [ "$output_A" == "$output_B" ]; then echo 'Correct'; else echo 'Not Correct'; fi
要获取字符串的一部分,请尝试查看 cut
或(对于更强大的东西)sed
和 awk
。
此外,只要学习一种良好的通用脚本语言,如 python
或 ruby
(甚至 perl
),就可以对这种类型有很大帮助的问题。
关于linux - bash 命令输出中的行作为字符串存储在变量中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17488161/