【发布时间】:2021-03-21 23:28:56
【问题描述】:
我有一个使用 esyscmd 生成列表的 M4 宏:
pushdef([FILES], esyscmd(echo \"\(\'`find test-photos -type f | paste -sd '\t' - | sed "s/\t/\',\'/g"`\'\)\"))dnl
撇开这可能是一个糟糕的想法,并且正在作为滥用 autoconf 系统的有意识练习,我如何成功地转义 , 正则表达式中的 , 字符,这样 M4 就不会解释它作为esyscmd 调用中的参数分隔符?
目前我得到:
/usr/bin/m4:configure.ac:8: Warning: excess arguments to builtin `esyscmd' ignored
...不管我如何尝试逃避,。用 不同的 字符替换 , 就可以了。例如。使用. 得到我:
('test-photos/foo'.'test-photos/bar')
【问题讨论】:
-
使用 [ 和 ] 将整个参数引用到
esyscmd。 -
@markasoftware 请提交以上内容作为答案,我会投票并接受。