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
我是 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