Sub functions can not execute.
I would like to use functions to produce the following output
Code:
a/Watermelon
a/Apple
a/Fire-Dragon
a/Papaya
Loop b:
b/Watermelon
b/Apple
b/Fire-Dragon
b/Papaya
Loop c:
c/Watermelon
c/Apple
c/Fire-Dragon
c/Papaya
Loop d:
d/Watermelon
d/Apple
d/Fire-Dragon
d/Papaya
Loop e:
e/Watermelon
e/Apple
e/Fire-Dragon
e/Papaya
=======================================================================
ATTEMPT 01
Code:
#!/bin/bash
#GNU bash, version 4.3.11(1)-release (i686-pc-linux-gnu)
#VARIABLES
#INITIALIZE
unset FF i w x y z
#DEFINE
z=Watermelon
y=Apple
x=Fire-Dragon
w=Papaya
#FUNCTIONS
f1 ()
{
echo="${1}/${z}"
}
f2 ()
{
echo="${1}/${y}"
}
f3 ()
{
echo "${1}/${x}"
}
f4 ()
{
echo "${1}/${w}"
}
bkp ()
{
for i in `echo $1`; do
echo "Loop ${i}:"
f1 "${i}";
f2 "${i}";
f3 "${i}";
f4 "${i}";
done
}
FF="a b c d e"
bkp "${FF}"
The results are not ideal, with f1 and f2 not executing:
Code:
$ funcPassStr_SubFuncInForInFunc.sh
Loop a:
a/Fire-Dragon
a/Papaya
Loop b:
b/Fire-Dragon
b/Papaya
Loop c:
c/Fire-Dragon
c/Papaya
Loop d:
d/Fire-Dragon
d/Papaya
Loop e:
e/Fire-Dragon
e/Papaya
***********************************************************************
In this next attempt, I define the sub functions inside of the function "bkp":
=======================================================================
ATTEMPT 02
Code:
#!/bin/bash
#GNU bash, version 4.3.11(1)-release (i686-pc-linux-gnu)
#VARIABLES
#INITIALIZE
unset FF i w x y z
#DEFINE
z=Watermelon
y=Apple
x=Fire-Dragon
w=Papaya
#FUNCTIONS
bkp ()
{
#SUB-FUNCTIONS
f1 ()
{
echo="${1}/${z}"
}
f2 ()
{
echo="${1}/${y}"
}
f3 ()
{
echo "${1}/${x}"
}
f4 ()
{
echo "${1}/${w}"
}
for i in `echo $1`; do
echo "Loop ${i}:"
f1 "${i}";
f2 "${i}";
f3 "${i}";
f4 "${i}";
done
}
FF="a b c d e"
bkp "${FF}"
Results:
Code:
$ funcPassStr_SubFuncInForInFunc.sh
Loop a:
a/Fire-Dragon
a/Papaya
Loop b:
b/Fire-Dragon
b/Papaya
Loop c:
c/Fire-Dragon
c/Papaya
Loop d:
d/Fire-Dragon
d/Papaya
Loop e:
e/Fire-Dragon
e/Papaya
***********************************************************************
In the next attempt I define the variables x-z w/in the main function bkp:
=======================================================================
ATTEMPT 03
Code:
#!/bin/bash
#GNU bash, version 4.3.11(1)-release (i686-pc-linux-gnu)
#VARIABLES
#INITIALIZE
unset FF i w x y z
#FUNCTIONS
bkp ()
{
#VARIABLES
#DEFINE
z=Watermelon
y=Apple
x=Fire-Dragon
w=Papaya
#SUB-FUNCTIONS
f1 ()
{
echo="${1}/${z}"
}
f2 ()
{
echo="${1}/${y}"
}
f3 ()
{
echo "${1}/${x}"
}
f4 ()
{
echo "${1}/${w}"
}
#MAIN
for i in `echo $1`; do
echo "Loop ${i}:"
f1 "${i}";
f2 "${i}";
f3 "${i}";
f4 "${i}";
done
}
FF="a b c d e"
bkp "${FF}"
Results:
Code:
$ funcPassStr_SubFuncInForInFunc.sh
Loop a:
a/Fire-Dragon
a/Papaya
Loop b:
b/Fire-Dragon
b/Papaya
Loop c:
c/Fire-Dragon
c/Papaya
Loop d:
d/Fire-Dragon
d/Papaya
Loop e:
e/Fire-Dragon
e/Papaya
***********************************************************************
Why do only functions f3 and f4 execute? How can I get f1 and f2 to execute?