From 676dcfe6e8836e8771943f9d075e2da6877aaf55 Mon Sep 17 00:00:00 2001 From: Ian Kelling Date: Mon, 28 Jul 2014 19:42:58 -0700 Subject: [PATCH] fix variable scope bug --- appendu | 24 +++++++++++------------- appendu-function | 24 +++++++++++------------- test/test | 40 ++++++++++++++++++++-------------------- 3 files changed, 42 insertions(+), 46 deletions(-) diff --git a/appendu b/appendu index 792ffce..1e3d583 100755 --- a/appendu +++ b/appendu @@ -47,6 +47,17 @@ LINE_SETs are treated the same. return 1 fi fi + + local strings line + if (( $# == 0 )); then + unset IFS + while read -r line; do + strings+=( "$line" ) + done + else + strings=( "$@" ) + fi + if ! $new_file; then if [[ ! -r $file ]]; then echo "appendu error: cannot read or write $file" @@ -56,19 +67,6 @@ LINE_SETs are treated the same. echo "appendu error: cannot read or write $file" return 1 fi - fi - - local strings - if (( $# == 0 )); then - unset IFS - while read -r x; do - strings+=( "$x" ) - done - else - strings=( "$@" ) - fi - - if $new_file; then # fix files with no newline at the end. # the following command won't work right on them otherwise. # e = run script, $a\ means append following text, but there is none, diff --git a/appendu-function b/appendu-function index a0fdc5d..8b03b0f 100644 --- a/appendu-function +++ b/appendu-function @@ -47,6 +47,17 @@ LINE_SETs are treated the same. return 1 fi fi + + local strings line + if (( $# == 0 )); then + unset IFS + while read -r line; do + strings+=( "$line" ) + done + else + strings=( "$@" ) + fi + if ! $new_file; then if [[ ! -r $file ]]; then echo "appendu error: cannot read or write $file" @@ -56,19 +67,6 @@ LINE_SETs are treated the same. echo "appendu error: cannot read or write $file" return 1 fi - fi - - local strings - if (( $# == 0 )); then - unset IFS - while read -r x; do - strings+=( "$x" ) - done - else - strings=( "$@" ) - fi - - if $new_file; then # fix files with no newline at the end. # the following command won't work right on them otherwise. # e = run script, $a\ means append following text, but there is none, diff --git a/test/test b/test/test index c2f2109..ce169c4 100755 --- a/test/test +++ b/test/test @@ -1,32 +1,32 @@ #!/bin/bash -l x=$(mktemp) appendu $x<<'EOF' -abc - -*!@#$^&*))0_)()?>> $y diff $x $y || echo check2 failed diffing $x and $y -output=$(appendu $x "abc -bd" "abc") +output=$(appendu $x "aa +ee" "bb") -good_output="abc -bd" +good_output="aa +ee" [[ $output == $good_output ]] || { echo check3 failed; echo "$output != $good_output"; } -- 2.30.2