Here's the code I need:
#!/bin/sh
x1="a1 a2"
x2="b1 b2"
list=SOMETHING
for x in "$list"
do
echo $x
done
And the output I want:
a1 a2
b1 b2
The question is: what should SOMETHING
be? I want $list
to behave just as $@
does.
Notes: I can't use $IFS
and I can't eval
the entire loop.
This is probably as close as you can get:
#!/bin/sh
x1="a1 a2"
x2="b1 b2"
set -- "$x1" "$x2"
for x in "$@"
do
# echo $x
echo "[${x}]" # proves that the lines are being printed separately
done
Output:
[a1 a2]
[b1 b2]
In Bash you can use an array:
#!/bin/bash
x1="a1 a2"
x2="b1 b2"
list=("$x1" "$x2")
for x in "${list[@]}"
do
# echo $x
echo "[${x}]" # proves that the lines are being printed separately
done
Same output.
It is not possible in standard POSIX shell.