#!/bin/bash # option handling case "$1" in -v|-q) volume=$1; prog=$2;; *) prog="$1";; esac # core error() { echo "$0:$@" exit 1 } checkList() { prog=$1 src=$2 file=$3 sed -n "s/^\($prog\) \.* \(.*\)/\1\t\2/p" "$src/$file" | \ while read line; do _prg=`echo "$line" | cut -f 1` _pkg=`echo "$line" | cut -f 2` echo "\`$_prg' is in the $src package \`$_pkg'" if [ "$volume" == '-v' ]; then pkgthing search "$_pkg" "$src" | sed 's/^\(.\)/ \1/g' fi done } useVar() { var=$1 val=$2 case "$var" in \$name) _name="$val";; \$union) :;; \$progs) checkList "$prog" "$_name" "$val" :;; esac } # parse files for lst in *.lst; do _name='oops' while read line; do if [ -n "$line" ]; then case "$line" in \#*) :;; # comment, do nothing \$*) # setting a variable var=${line%%=*} val=${line#$var=} useVar "$var" "$val" :;; *) :;; # setting a source esac fi done < "$lst" done