linux - bash 命令输出中的行作为字符串存储在变量中

标签 linux string bash output

我正在尝试找到与此类似的问题的解决方案:

#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_2B_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 或(对于更强大的东西)sedawk

此外,只要学习一种良好的通用脚本语言,如 pythonruby(甚至 perl),就可以对这种类型有很大帮助的问题。

关于linux - bash 命令输出中的行作为字符串存储在变量中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17488161/

相关文章:

c++ - 实时应用程序中的内存泄漏检查

Java - 将十六进制转换为十进制 - 制作一个字符串=正确的数字

php - 从字符串中删除值

bash - 如何匹配 bash case 语句中的数字字符串

linux - 如何关闭 grep 行缓冲

linux - 是否有用于创建硬链接(hard link)备份的实用程序?

python - 预期的文件写入命令不会像我想象的那样表现

c - 强制刷新或读取未刷新的输出

c++ - wcout 不会打印正确的单引号

c - "Connection Reset by Peer"如果服务器在 write() 之后立即调用 close()