Löschen bestimmter Werte aus einem array in der ksh

Habe ich eine angepasste .Profil, dass ich verwenden in der ksh und unten ist eine Funktion, die ich erstellt zu überspringen hin und her von Verzeichnissen mit allzu komplizierte oder lange Namen.

Wie Sie sehen können, die Pfade sind gespeichert in einem array (BOOKMARKS[]) zu verfolgen und verweisen Sie zu einem späteren Zeitpunkt. Ich möchte, löschen zu können, bestimmte Werte aus dem array, mit einer case-Anweisung (oder OPTARG wenn notwendig) so, dass kann ich nur bmk -d # entfernen Sie den Pfad zu dem entsprechenden index.

Habe ich fummelte, um mit array +A and -A, aber es aufgewickelt Schrauben ist mein array (was ist Links in der auskommentierten code vielleicht nicht schön...ich habe nicht Korrektur gelesen, es).

Irgendwelche Vorschläge/Tipps, wie Sie erstellen, die diese Funktionalität? Danke!

# To bookmark the current directory you are in for easy navigation back and forth from multiple non-aliased directories
# Use like 'bmk' (sets the current directory to a bookmark number) to go back to this directory, i.e. type 'bmk 3' (for the 3rd)
# To find out what directories are linked to which numbers, type 'bmk -l' (lowercase L)
# For every new directory bookmarked, the number will increase so the first time you run 'bmk' it will be 1 then 2,3,4...etc. for every consecutive run therea
fter
# TODO: finish -d (delete bookmark entry) function
make_bookmark()
{
        if [[ $# -eq 0 ]]; then
                BOOKMARKS[${COUNTER}]=${PWD}
                (( COUNTER=COUNTER+1 ))
        else
                case $1 in
                        -l)     NUM_OF_ELEMENTS=${#BOOKMARKS[*]}

                                while [[ ${COUNTER} -lt ${NUM_OF_ELEMENTS} ]]
                                do
                                        (( ACTUAL_NUM=i+1 ))
                                        echo ${ACTUAL_NUM}":"${BOOKMARKS[${i}]}
                                        (( COUNTER=COUNTER+1 ))
                                done
                                break ;;


                       #-d)    ACTUAL_NUM=$2
                                #(( REMOVE=${ACTUAL_NUM}-1 ))
                                #echo "Removing path ${BOOKMARKS[${REMOVE}]} from 'bmk'..."
                                #NUM_OF_ELEMENTS=${#BOOKMARKS[*]}

                                #while [[ ${NUM_OF_ELEMENTS} -gt 0 ]]
                                #do
                                        #if [[ ${NUM_OF_ELEMENTS} -ne ${ACTUAL_NUM} ]]; then
                                        #       TEMP_ARR=$(echo "${BOOKMARKS[*]}")
                                        #       (( NUM_OF_ELEMENTS=${NUM_OF_ELEMENTS}-1 ))
                                        #fi
                                        #echo $TEMP_ARR
                                #done
                                #break
                                #for VALUE in ${TEMP_ARR}
                                #do
                                #       set +A BOOKMARK ${TEMP_ARR}
                                #done
                                #echo ${BOOKMARK[*]}

                                #break ;;

                        *)      (( INDEX=$1-1 ))
                                cd ${BOOKMARKS[${INDEX}]}
                                break ;;
                esac
        fi
}
InformationsquelleAutor Sean | 2010-01-21
Schreibe einen Kommentar