我写了一个bash脚本,应该得到ghostscript的版本号。代码如下所示:
local str=$(gs -v)
local gs_version=''
if [ -n "$str" ] ; then
gs_version=`awk -F'|' 'Ghostscript/ {version=$3; print version}' $str`
fi
echo " version: $gs_version"
gs -v的结果是:
GPL Ghostscript 8.70 (2009-07-31)
Copyright (C) 2009 Artifex Software, Inc. All rights reserved.
脚本正在寻找单词Ghostscript,并试图提取第八个单词8.70。这是我的目标。
我不是awk专家,但是当我运行此代码时,我收到以下错误:
awk: Ghostscript/ {version=$3; print version}
awk: ^ syntax error
我想我必须失明,因为我看不出有什么问题。我以为我在Ubuntu上有这个工作,但是当我在CentOS 6上试用它时,这就是我得到的。
答案 0 :(得分:2)
你可以说:
awk '/Ghostscript/{print $3}' inputfile
从包含Ghostscript的行中获取第三个字段。
当你说:
gs_version=`awk -F'|' 'Ghostscript/ {version=$3; print version}' $str`
有:
/
awk
从字符串中读取,您需要使用herestring。|
)gs_version=$(awk '/Ghostscript/ {version=$3; print version}' <<< "$str")
虽然有更简单的方法来获取版本信息。
答案 1 :(得分:2)
作为替代方案,您可以使用grep -P
来获取该版本字符串:
gs -v | grep -oP '(?<=Ghostscript )\S+'
8.70