小编Pat*_*ick的帖子

Shell变量带空格,引用单个命令行选项

Autoconf脚本在使用带空格的文件名或路径名时遇到问题.例如,

./configure CPPFLAGS="-I\"/path with space\""
Run Code Online (Sandbox Code Playgroud)

结果(config.log):

configure:3012: gcc  -I"/path with space"  conftest.c  >&5
gcc: with: No such file or directory
gcc: space": No such file or directory
Run Code Online (Sandbox Code Playgroud)

来自./configure的编译命令是ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5',我无法修改它(我也许可以,但以这种方式解决autoconf不是一般解决方案).

我认为它归结为获取一个shell变量,该变量包含要解析为单个命令行变量的空格而不是在空格处分割.我能想到的最简单的shell示例是创建一个带空格的文件,并尝试列出ls带有shell变量作为参数ls:

$ touch "a b"
$ file="a b"
$ ls $file
ls: a: No such file or directory
ls: b: No such file or directory
Run Code Online (Sandbox Code Playgroud)

这工作,但是非法,因为在autoconf我无法修改shell代码:

$ ls "$file"
a b
Run Code Online (Sandbox Code Playgroud)

引用事物的下列尝试均无效:

$ file="\"a \"b"; ls $file
ls: "a: No such …
Run Code Online (Sandbox Code Playgroud)

bash shell autoconf

14
推荐指数
1
解决办法
2万
查看次数

标签 统计

autoconf ×1

bash ×1

shell ×1