Karthik
Karthik

Reputation: 61

Giving input to a shell script through command line

I have a file like this with .sh extension..

clear
echo -n "Enter file name: "
read FILE
gcc -Wall -W "$FILE" && ./a.out
echo

When I can execute this file, it asks for a .c file and when given, it compiles and gives output of the .c file.

For this, everytime I have to first execute this .sh file and then give it the .c file name when asked. Is there anyway, so that, I can just give the .c file in the command line itself, so that it takes that file and does the work...

What I mean is, if I give "./file.sh somecommand cfile.c", then it takes cfile.c as input, compiles it and gives the output...

Upvotes: 0

Views: 19251

Answers (2)

William
William

Reputation: 4935

You can also have it do things either way:

if [ -n "$1" ] ; then
    FILE="$1"
else
    echo -n "Enter file name: "
    read FILE
fi
gcc -Wall -W "$FILE" && ./a.out

This will use the command line argument if it is there, otherwise it asks for a file name.

Upvotes: 1

kamituel
kamituel

Reputation: 35950

Use '$1' variable:

clear
gcc -Wall -W $1 && ./a.out
echo

$1 means "first argument from the command line".

Alternatively, if you want to compile multiple files at once using your script, you can use $@ variable, on example:

gcc -Wall -W $@ && ./a.out

You will invoke your script as follows (assuming it's called 'script.sh'):

./script.sh file.c

Plase see section 3.2.5 of the following article.

If your project gets bigger, you may also want to consider using tools designated for building, like automake.

Upvotes: 4

Related Questions