1) . setEnv.ksh
2) eval "setEnv.ksh"
1) OUTPUT="test"
2) OUTPUT="test"
export OUTPUT
3) typeset OUTPUT="test"
1) $VARIANT_NAME populates the VARIANT_NAME to characters as many as possible. For example, $Fest equels ${Fest}.
2) ${VARIANT_NAME} can use REG to populate the expression values. For example, TEST="/opt/sfw/gcc" echo ${TEST%/*}, will print /opt/sfw
4. Today, I made a test for the variants in ksh. I summarize the deals about ksh variants here.
2). If you define a variant in global area, you can get it inside a function.
3). If you define a variant inside a function, you can get it in a global area.
4). If you define a variant inside a function, you can get it in another function.
5). It is not the same situation with export keywork or not. That is to say, the exported variants can be inherited by child processes. In the same process, with the export or not, it doesn't matter. But if you want child process to share the variant, you must export them.
6). In global area, $0, $1... is the process parameters while inside function is function parameters.
echo "before test()"
echo "TEST0: ${TEST0}"
echo "TEST1: ${TEST1}"
echo "TEST2: ${TEST2}"
echo "TEST3: ${TEST3}"
TEST0=$1
TEST1=$2
TEST2=$3
TEST3=$4
echo "after assign parameter inside test()"
echo "TEST0: ${TEST0}"
echo "TEST1: ${TEST1}"
echo "TEST2: ${TEST2}"
echo "TEST3: ${TEST3}"
TEST0="bde"
TEST1="bde"
TEST2="bde"
TEST3="bde"
export TEST2
export TEST3
echo "after test()"
echo "TEST0: ${TEST0}"
echo "TEST1: ${TEST1}"
echo "TEST2: ${TEST2}"
echo "TEST3: ${TEST3}"
TEST4="hahaha"
TEST5="hihihi"
export TEST5
echo "TEST4: ${TEST4}"
echo "TEST5: ${TEST5}"
}
{
TEST0="abc"
TEST1="abc"
TEST2="abc"
TEST3="abc"
export TEST1
export TEST3
echo "before call method"
echo "TEST0: ${TEST0}"
echo "TEST1: ${TEST1}"
echo "TEST2: ${TEST2}"
echo "TEST3: ${TEST3}"
test1 $TEST0 $TEST1 $TEST2 $TEST3
echo "after call method"
echo "TEST0: ${TEST0}"
echo "TEST1: ${TEST1}"
echo "TEST2: ${TEST2}"
echo "TEST3: ${TEST3}"
echo "TEST4: ${TEST4}"
echo "TEST5: ${TEST5}"
}
before call method
TEST0: abc
TEST1: abc
TEST2: abc
TEST3: abc
before test()
TEST0: abc
TEST1: abc
TEST2: abc
TEST3: abc
after assign parameter inside test()
TEST0: abc
TEST1: abc
TEST2: abc
TEST3: abc
after test()
TEST0: bde
TEST1: bde
TEST2: bde
TEST3: bde
TEST4: hahaha
TEST5: hihihi
after call method
TEST0: bde
TEST1: bde
TEST2: bde
TEST3: bde
TEST4: hahaha
TEST5: hihihi