append.sh revision da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin########################################################################
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# #
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# This software is part of the ast package #
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# Copyright (c) 1982-2007 AT&T Knowledge Ventures #
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# and is licensed under the #
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# Common Public License, Version 1.0 #
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# by AT&T Knowledge Ventures #
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# #
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# A copy of the License is available at #
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# http://www.opensource.org/licenses/cpl1.0.txt #
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# (with md5 checksum 059e8cd6165cb4c31e351f2b69388fd9) #
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# #
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# Information and Software Systems Research #
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# AT&T Research #
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# Florham Park NJ #
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# #
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# David Korn <dgk@research.att.com> #
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# #
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin########################################################################
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinfunction err_exit
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin{
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin print -u2 -n "\t"
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin print -u2 -r ${Command}[$1]: "${@:2}"
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin let Errors+=1
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin}
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinalias err_exit='err_exit $LINENO'
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinCommand=${0##*/}
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chininteger Errors=0
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin{
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinx=abc
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinx+=def ;} 2> /dev/null
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinif [[ $x != abcdef ]]
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinthen err_exit 'abc+def != abcdef'
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinfi
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chininteger i=3
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin{ i+=4;} 2> /dev/null
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinif (( i != 7 ))
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinthen err_exit '3+4!=7'
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinfi
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chiniarray=( one two three )
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin{ iarray+= (four five six) ;} 2> /dev/null
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinif [[ ${iarray[@]} != 'one two three four five six' ]]
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinthen err_exit 'index array append fails'
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinfi
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinunset iarray
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chiniarray=one
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin{ iarray+= (four five six) ;} 2> /dev/null
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinif [[ ${iarray[@]} != 'one four five six' ]]
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinthen err_exit 'index array append to scalar fails'
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinfi
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chintypeset -A aarray
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinaarray=( [1]=1 [3]=4 [xyz]=xyz )
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinaarray+=( [2]=2 [3]=3 [foo]=bar )
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinif [[ ${aarray[3]} != 3 ]]
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinthen err_exit 'associative array append fails'
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinfi
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinif [[ ${#aarray[@]} != 5 ]]
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinthen err_exit 'number of elements of associative array append fails'
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinfi
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinpoint=(x=1 y=2)
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinpoint+=( y=3 z=4)
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinif [[ ${point.y} != 3 ]]
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinthen err_exit 'compound append fails'
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinfi
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinunset foo
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinfoo=one
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinfoo+=(two)
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinif [[ ${foo[@]} != 'one two' ]]
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinthen err_exit 'array append to non array variable fails'
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinfi
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinexit $((Errors))