保留从Makefile调用的脚本换行符stdout

时间:2016-11-06 18:00:12

标签: bash makefile

我需要从Makefile echo multilines脚本stdout ::

$ more Makefile
mydir:
    a=$(shell ls -la)
    echo "$(a)"

所以我想拥有::

$ make mydir
total 12
drwxrwxr-x  2 luis luis 4096 nov.   6 18:55 .
drwxrwxr-x 14 luis luis 4096 nov.   6 18:45 ..
-rw-rw-r--  1 luis luis   40 nov.   6 18:55 Makefile
$

但我得到了

$ make mydir
a=total 12 drwxrwxr-x  2 luis luis 4096 nov.   6 18:55 . drwxrwxr-x 14 luis luis 4096 nov.   6 18:45 .. -rw-rw-r--  1 luis luis   40 nov.   6 18:55 Makefile
/bin/sh: 1: 12: not found
Makefile:2 : la recette pour la cible « mydir » a échouée
make: *** [mydir] Erreur 127

顺便说一下,我的真实脚本的名字是负数,如my-script-aa

这篇文章没有给出Makefile结果: https://unix.stackexchange.com/questions/72724/how-can-i-preserve-new-lines-coming-from-a-commands-output-during-variable-assi

我正在使用GNU bash, version 4.3.46GNU Make 4.1

1 个答案:

答案 0 :(得分:2)

为什么你使用shell make函数,当你已经在shell中时(因为你在配方中)?

尝试:

mydir:
        a=$$(ls -la); echo "$$a"

请注意,这相当于在shell提示符下运行这些命令:

a=$(ls -la); echo "$a"

但我们转义$(通过输入两次),以便make不解释它。