rpmbuild:我可以将变量设置为截断的主机名并强制使用小写

时间:2016-08-03 00:18:49

标签: bash rpmbuild

所以我可以很容易地在bash中做这种事情,使用类似的东西:

HOSTNAME=`hostname -s`
SHORTHOST=${HOSTNAME%??}
HOST=$( echo "$SHORTHOST" | tr -s  '[:upper:]'  '[:lower:]' )

可能有更好的方法可以做到这一点,但确实有效。

真正的问题是,是否有办法在spec文件的变量中设置它?

或者我应该在%post中使用这些东西?

2 个答案:

答案 0 :(得分:2)

此问题已标记为retrieveList()

如果您实际使用bash,则已定义bash。要将其转换为小写,只需使用HOSTNAME

因此,以小写形式获得SHORTHOST:

${HOSTNAME,,}

如果我们不在bash下运行,那么我们必须使用一些实用程序转换为小写。虽然SHORTHOST=${HOSTNAME%??} echo "${SHORTHOST,,}" 可以广泛使用,但tr具有保护unicode安全的优势:

sed

或者,将所有内容放在一起用于非bash shell:

HOST="$(echo "${shorthost}" | sed 's/.*/\L&/')"

如果您使用的是早于版本4的bash(这意味着Mac OSX),则使用非bash方法。

答案 1 :(得分:0)

您可以使用%()运行bash命令,也可以使用rpmbuild在bash中计算的变量的脚本启动--define。两者都有优点和缺点。