我尝试安装的软件包有以下autogen.sh(仅显示第一行):
#! /bin/sh
libtoolize --automake
但是,Mac上的 ,一旦安装GNU libtool(例如通过MacPorts), libtoolize将重命名为glibtoolize 。在this answer之后,我因此想要将上面的autogen.sh修改为:
#! /bin/sh
if [ $(hash libtoolize 2>&-) -eq 0 ]
then
libtoolize --automake
else
glibtoolize --automake
fi
但它会返回./autogen.sh: line 6: [: -eq: unary operator expected
。我在这里做错了什么?
答案 0 :(得分:3)
我无法评论(还没有足够的代表),但我想指出的是,如果你通过简单调用autoreconf工具替换autogen.sh脚本,这实际上可能是最好的。是专门创建的,以替换所有那些autogen.sh,bootstrap.sh等脚本。它是任何autoconf的一部分(不确定从什么时候开始,但肯定是autoconf 2.63的一部分(当前是2.68)。
答案 1 :(得分:1)
您遇到的问题是$(hash libtoolize 2>&-)
没有输出,因此该行被解释为:if [ -eq 0 ]
可以通过$?
访问该命令的返回码,因此您可以执行以下操作:
hash libtoolize 2>&-
if [ $? -eq 0]; then
#....
但是,您也可以这样做:
if hash libtoolize 2>&-
then
libtoolize --automake
else
glibtoolize --automake
fi