wookie1
wookie1

Reputation: 511

Redirecting input separated with spaces

Hi I've a question about feeding inputs to this simple bash script I wrote. All it does is add a set of flags to my compile operation to save me having to write them in myself every time. I can run it by using echo myprogram.c -o myprogram -llibrary | ./Compile. But I can't find a way to run it in the way I expected to be able to, ./Compile < myprogram.c -o myprogram -llibrary I've tried a few combinations of quotes and brackets to no avail, can anyone tell me how to feed the same input as produced by echo using the redirect input command.

#!/bin/bash
# File name Compile
#Shortcut to compile with all the required flags, name defaulting to
#first input ending in .c
echo "Enter inputs: "
read inputs
gcc -Wall -W -pedantic -std=c89 -g -O $inputs
exit 0

Upvotes: 1

Views: 135

Answers (2)

oHo
oHo

Reputation: 54581

You can use process substitution:

./Compile < <( echo myprogram.c -o myprogram -llibrary )

the above line produces the same result as your original command:

echo myprogram.c -o myprogram -llibrary | ./Compile

Upvotes: 2

Hui Zheng
Hui Zheng

Reputation: 10224

Just change your shell to:

#!/bin/bash
gcc -Wall -W -pedantic -std=c89 -g -O "$@"

Then you can only write(no redirection needed):

./Compile myprogram.c -o myprogram -llibrary

BTW, don't explicitly write exit 0 at end of this shell. It is redundant when gcc succeeds, and is wrong when gcc fails(exit code 1 will be overwritten).

Upvotes: 2

Related Questions