#!/bin/bash  
# petteriIII 23.10.2015 
# Xref-ohjelma tulostaa muuttujien arvot mikäli niiden nimessä on ainakin yksi pieni kirjain. tai kun niiden nimi on pelkästään yksi suuri kirjain jonka perässä voi olla yksi numero.
# echo -e "funktiot paikasta:"${0%/OMATSKRIPTIT*}"/OMATSKRIPTIT/FUNKTIOKIRJASTO/Xref_funktiot liitetään koodiin" 

function Xref () {
function TulostaMuuttuja () { 
[[ $(eval echo \$$1) ]] && echo -n $1':n arvo: ' && eval echo \$$1 > /tmp/delme || echo $1" on määrittelemätön" > /tmp/delme
}

function TulostaMatriisi () {  
[[ $(eval echo \${$1[*]}) ]] && { 
echo -n $1':n arvot    : '; eval echo \${$1[*]} > /tmp/delme  # arvojen väliin tulostuu välilyönti
echo -n $1':n osoitteet: '; eval echo \${!$1[*]} > /tmp/delme # osoitteiden väliin tulostuu välilyönti. 
}; echo ;}

function TestaaMuuttuja () { 
[[ $(eval echo \${!$1[*]} | cut -sd' ' -f 2) ]] && TulostaMatriisi $1 && return # Matriisi voidaan tulostaa muuttujana jos siinä ei ole vähintään kahta jäsentä. 
TulostaMuuttuja $1 
echo
}

# echo -e "Xrefiä on kutsuttu skriptistä:"${0}".   Kutsu tehtiin riviltä:"${BASH_LINENO[0]}"\n\n"
muuttujalista=$(compgen -v | grep [[:lower:]] | grep -v ^_) # compgen -v:n muodostamasta muuttujalistasta poistetaan "ei halutut"
muuttujalista=$muuttujalista" "$(compgen -v | grep ^[A-Z]\[0-9]*$ | grep -v ^_) # lisätään listaan muuttujat joiden ensimmäinen kirjain on iso mutta senjälkeen ei mitään tai vain numeroita
for muuttuja in $muuttujalista; do TestaaMuuttuja $muuttuja; done
#apu=$(cat "${0}" | grep function ); [[ $apu > 0 ]] && echo "listaus skriptin funktioista:" &&  echo -e ' '"${apu[@]/%/\n}"  
}
 
# function plot_matrix () { eval echo \${$1[*]} | tr ' ' '\n' | gnuplot -p -e 'plot "/dev/stdin" with lines' ;}; for x in {1..628}; do apu[$x]=$(awk -v x=$x 'BEGIN{print sin(x/100)}'); done; plot_matrix apu 

