Bash 编写自定义输出脚本

Bash Scripting custom output

我是 Bash 脚本编写的初学者,我需要将自定义命令输出分配给变量,而不是整个命令只是 it.Is 的一部分,我有办法做到这一点吗?
命令:

gtf 1600 720 60

输出:

# 1600x720 @ 60.00 Hz (GTF) hsync: 44.76 kHz; pclk: 93.10 MHz
  Modeline "1600x720_60.00"  93.10  1600 1672 1840 2080  720 721 724 746  -HSync +Vsync

我要存储的内容:

"1600x720_60.00"  93.10  1600 1672 1840 2080  720 721 724 746  -HSync +Vsync

您可以将命令括在反引号中以存储其输出:

a=`echo Hello`

或者,您也可以使用 $():

a=$(echo Hello)

如果您只想存储部分输出,您可以将命令的输出通过管道传输到后处理脚本,例如sed:

a=$(echo foo | sed 's/foo/bar/')

有很多方法可以达到你想要的输出,但我喜欢 grep:

gtf 1600 720 60 | grep -Po '(Modeline)\K(.*)'

在这里,您将使用带有 grep 的正则表达式来捕获“Modeline”之后的行上的任何输出。

然后您可以使用命令替换将输出存储在变量中:

OUTPUT=$(gtf 1600 720 60 | grep -Po '(Modeline)\K(.*)')

echo "$OUTPUT"
# "1600x720_60.00"  93.10  1600 1672 1840 2080  720 721 724 746  -HSync +Vsync