[SOLVED] Makefile – when running shell commands the output doesn't have line breaks

Issue

I’m editing a makefile that ran a lot of sh scripts, and i just added one that runs a terraform command.
When i use directly the .SH file (or the command manually in console, the output is OK, but if i ran it inside the makefile, the output is all together, without spacing or line breaks.

Is there any way to fix this?

PFB commands and outputs.

runcommands.sh (it ran as ./runcommands.sh init/plan/etc)

terraform $1 

output:

Terraform initialized in an empty directory!

The directory has no Terraform configuration files. You may begin
working with Terraform immediately by creating Terraform configuration
files.

Makefile:

plan:
    $(shell ./runcommands.sh init) 

output:

Terraform initialized in an empty directory! The directory has no
Terraform configuration files. You may begin working with Terraform
immediately by creating Terraform configuration files.

Solution

The recipe:

plan:
    $(shell ./runcommands.sh init)

does not do what you seem to think it does. The $(shell ...) syntax executes the command and builds a string. Because of its location in the Makefile, that string is then executed as a command. You almost certainly do not want the output of ./runcommands.sh to be executed. You want:

plan:
    ./runcommands.sh init 

Answered By – William Pursell

Answer Checked By – Robin (BugsFixing Admin)

Leave a Reply

Your email address will not be published.