# HG changeset patch # User casties # Date 1165860579 -3600 # Node ID 377ba1dd9ec6459cc07658e286277dd98ee5899b # Parent b1f1d1fbf6e5b6d0f67d12cbb4a6e3c64c95b91f added -long option to handle values with spaces diff -r b1f1d1fbf6e5 -r 377ba1dd9ec6 changemany.sh --- a/changemany.sh Mon Dec 11 19:09:00 2006 +0100 +++ b/changemany.sh Mon Dec 11 19:09:39 2006 +0100 @@ -1,19 +1,37 @@ #!/bin/bash -VERSION="changemany V0.1 (29.6.2006 ROC)" +VERSION="changemany V0.2 (11.12.2006 ROC)" #set -x if [ -z "$1$2" ] then echo $VERSION - echo "use: $0 dirlist [params...]" + echo "use: $0 dirlist [-debug] [-dry-run] [-long] [params...]" echo " Changes the document directories given in the file dirlist." echo " The list has the full pathname first and then one column per parameter, separated with spaces." + echo " -debug: is passed to changemeta script" + echo " -dry-run: only print out script calls" + echo " -long: pass only one parameter but its value can contain spaces" exit 1 fi DIRLIST="$1" +if [ "$2" == "-debug" ] +then + shift + DEBUG="-debug" +fi +if [ "$2" == "-dry-run" ] +then + shift + DRY_RUN=1 +fi +if [ "$2" == "-long" ] +then + shift + LONG=1 +fi PARAM1="$2" PARAM2="$3" PARAM3="$4" @@ -26,24 +44,60 @@ CNT=0 -# read directories and options from DIRLIST -while read DIR OPT1 OPT2 OPT3 -do - CNT=$(( $CNT + 1 )) - if [ -d "$DIR" ] - then - echo "changing document $CNT: $DIR..." - if /usr/local/mpiwg/archive/changemeta "${PARAM1:+$PARAM1=$OPT1}" "${PARAM2:+$PARAM2=$OPT2}" "${PARAM3:+$PARAM3=$OPT3}" "$DIR" - then - echo " OK" - else - echo "FAILED!" - # abort? - fi - else - echo "$CNT ERROR: document directory $DIR not found!" - fi -done < $DIRLIST +if [ -z $LONG ] +then +# short options + # read directories and options from DIRLIST + while read DIR OPT1 OPT2 OPT3 + do + CNT=$(( $CNT + 1 )) + if [ -d "$DIR" ] + then + echo "changing document $CNT: $DIR..." + if [ -n "$DRY_RUN" ] + then + echo "/usr/local/mpiwg/archive/changemeta ${PARAM1:+$PARAM1=$OPT1} ${PARAM2:+$PARAM2=$OPT2} ${PARAM3:+$PARAM3=$OPT3} $DEBUG $DIR" + echo " FAKED" + else + if /usr/local/mpiwg/archive/changemeta "${PARAM1:+$PARAM1=$OPT1}" "${PARAM2:+$PARAM2=$OPT2}" "${PARAM3:+$PARAM3=$OPT3}" "$DEBUG" "$DIR" + then + echo " OK" + else + echo "FAILED!" + # abort? + fi + fi + else + echo "$CNT ERROR: document directory $DIR not found!" + fi + done < $DIRLIST +else +# long option + # read directories and options from DIRLIST + while read DIR OPT + do + CNT=$(( $CNT + 1 )) + if [ -d "$DIR" ] + then + echo "changing document $CNT: $DIR..." + if [ -n "$DRY_RUN" ] + then + echo "/usr/local/mpiwg/archive/changemeta ${PARAM1:+$PARAM1=$OPT} $DEBUG $DIR" + echo " FAKED" + else + if /usr/local/mpiwg/archive_devel/changemeta.pl "${PARAM1:+$PARAM1=$OPT}" "$DEBUG" "$DIR" + then + echo " OK" + else + echo "FAILED!" + # abort? + fi + fi + else + echo "$CNT ERROR: document directory $DIR not found!" + fi + done < $DIRLIST +fi if [ $CNT = 0 ] then