【shell】基礎から立ちかえる3

function test_func() {
    local var1
    var1=aaa

    local var2=bbb
}
function echo_self_args()
{
    echo $1
    echo "$2"
    echo ${3}
    echo "${4}"
    echo $#
    echo "$@"
}

echo_self_args arg1 arg2 'arg3 arg4' arg5
function echo_value1()
{
    local var1=local1
    echo ${FUNCNAME[0]} ':$var1:1' $var1

    echo ${FUNCNAME[0]} ':$var2:1' $var1
}

function echo_value2()
{
    local var1=local2
    echo ${FUNCNAME[0]} ':$var1:1' $var1

    local var2=local2
    echo ${FUNCNAME[0]} ':$var2:1' $var1

    echo_value1
    echo ${FUNCNAME[0]} ':$var1:1' $var1
    echo ${FUNCNAME[0]} ':$var2:1' $var1
}

var1=global
echo 'global :$var1:1:' $var1
echo 'global :$var2:1:' $var2

echo_value2
echo 'global :$var1:2:' $var1
echo 'global :$var2:2:' $var2
function return_test()
{
    if [[ -z $1 ]]; then
        echo 'arg1 is empty.'
        return 1
    fi

    echo $1
}

return_test test
echo '終了ステータス': $?
echo ---
return_test 
echo '終了ステータス': $?
echo 'Hello' > hello.txt
ls /bin /error > bin.txt 2> error.txt
ls /bin /error &> result.txt
tr hoge fuga < hoge.txt
var1=value
text=$(cat << EOF
    arg1: $1
    var1: $var1
EOF
)
echo "$text"
echo first message1 > output.txt
echo second message1 >> output.txt
echo third message1 >> output.txt

{
    echo first message2
    echo second message2
    echo third message2
} > output.txt

{ echo first message3;echo second message3;echo third message3; } > output.txt
cd /bin
pwd
var1=value1
echo $var1

(
    cd /home/vagrant
    pwd
    echo $var1
    var1=value2
    echo $var1
)

pwd
echo $var1
set -e

ls /error
mkdir /error/dir1
set -u

rm -rf $work_dir/
set -C

touch test1.txt
echo "aaa" >| test1.txt
echo "bbb" >> test1.txt

touch test2.txt
echo "ccc" > test2.txt