我需要从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.46
和GNU Make 4.1
答案 0 :(得分:2)
为什么你使用shell
make函数,当你已经在shell中时(因为你在配方中)?
尝试:
mydir:
a=$$(ls -la); echo "$$a"
请注意,这相当于在shell提示符下运行这些命令:
a=$(ls -la); echo "$a"
但我们转义$
(通过输入两次),以便make
不解释它。