【发布时间】:2012-04-25 02:02:26
【问题描述】:
这是我在一个开源项目(不在本系统上编译)中名为 libtool 的文件中找到的一些代码:
case $arg in
-*=*)
optarg=`$echo "X$arg" | $Xsed -e 's/[-_a-zA-Z0-9]*=//'` ;;
*) optarg= ;;
esac
我收到了 case 语句,但我不确定第一行 optarg=... 是否存在。它想达到什么目的?对于这个测试用例,让:
CC="arm-elf-gcc"
arg="--tag=CC"
Xsed="/usr/bin/sed -e 1s/^X//"
在 OS X 中运行它让我受益匪浅:
../libtool: line 828: X--tag=CC: command not found
我认为它可能试图将“arm-elf-gcc”分配给变量 optarg,但我不确定。该软件在 Ubuntu 中整体编译正常,但 libtool 文件看起来很不一样。
【问题讨论】:
-
您缺少
$echo的定义;在大多数 GNU 软件中,这是搜索不扩展转义序列的echo实现的结果。 -
@geekosaur 调试,发现$echo为空。知道该怎么做(获得新的回声?)?
-
您可以尝试将其设置为
echo。此外,如果您使用在另一个系统(例如,Linux 与 OS X)上生成的libtool,您可能需要运行libtoolize来生成适用于本地系统的libtool。