Reputation: 2763
i want to put some arguments into a variable f.e.
CFLAGS=-c --sysroot=$sysroot
but bash complains that it does not find the file --sysroot... why? How can I put this arguments into the variable and pass them later to the program.
Additionally i would like to do something like:
for dir in ${include_dirs[*]};
do
CFLAGS=$CFLAGS "-I$dir"
done
but this does also not work as expected.
EDIT: One solution
CFLAGS=("-c" "--sysroot=$sysroot")
and in the loop
CFLAGS=("${CFLAGS[0]}" "-I$dir")
i am wondering if there is maybe a more obvious solution.
Upvotes: 2
Views: 803
Reputation: 784918
In shell quotes are pretty important so:
CFLAGS="-c --sysroot=$sysroot"
otherwise BASH interprets it as 2 different argument.
Alternatively you can use arrays to store it:
CFLAGS=("-c" "--sysroot=$sysroot")
And use them later as:
"${CFLAGS[@]}"
very important to quote the array expansion.
Upvotes: 4