我想从Makefile中向一个或多个不同的make目标传递由引号括起来的子字符串组成的空格分隔字符串。该目标只是执行一个bash脚本,然后将每个引号括起来的子字符串作为位置参数传递给另一个脚本。
测试的Makefile:
这是 "script.sh" 文件的内容:
这行不通;输出结果为(注意周围的单引号):
要明确一点,我想要的是将许多参数传递给
最好的方法是什么?理想情况下,我们应该在
测试的Makefile:
FOO="foo bar"
FOO+="bar baz"
FOO+="baz qux"
FOO+="qux"
export FOO
t:
./script.sh
这是 "script.sh" 文件的内容:
#! /bin/bash
set -ex
./thing.sh "$FOO"
这行不通;输出结果为(注意周围的单引号):
~/c/scrap
(i) make t
./script.sh
+ ./thing.sh '"foo bar" "bar baz" "baz qux" "qux"'
要明确一点,我想要的是将许多参数传递给
thing.sh
而不是单个参数,并且我需要引用每个参数,因为它可能包含空格或特殊字符。 ~/c/scrap
(i) make t
./script.sh
+ ./thing.sh "foo bar" "bar baz" "baz qux" "qux"
最好的方法是什么?理想情况下,我们应该在
Makefile
中解决这个问题,以避免在每个使用FOO
的目标中重复解决方案。
script.sh
(和thing.sh
)需要引号,还是只是想让它像在控制台上键入每个单词时一样运行。区别在于script.sh
中$1
的值应该是"foo"
还是仅为foo
? - Jonathan Leffler