Wie ich lernte, die Liste zu lieben

Arrays kommen in der Bourne Again Shell leider zu fummelig daher.

Es ist einfacher (und eleganter), eine Komma-Separierte-Liste mit ähnlichen Funktionalitäten auszustatten. Damit man das nicht jedesmal neu coden muss: lima

lima ist eine bash-Library, die man inludieren kann

lima inkludieren
  $#> . /var/install/include/lima

Wenn man permissive beim includieren sagt, kann man mehr als ein Element gleichen Namens haben.

lima permissiv inkludieren
  $#> . /var/install/include/lima permissive

lima kann dann in der Shell / im Script wie folgt aufgerufen werden:

lima Aufruf
 $#> lima <cmd> <part> <list>

ist eins von add, addFront, del, n, pos, pop, rewind, shift, sort

Zu diesen Kommandos gibt lima immer die aktuelle Liste zurück, also fang sie auf, Du PokéMongo!

lima Beispiel
  $#> list=$(lima add f a,b,c,d,e)

Einige Kommandos sind Tests und geben true oder false zurück: in, first, last

lima Tests
  $#> lima in needle "$list" && echo "Hurra!"
lima usage
 add <elem> <list>:         add <elem> to the <list>'s end
 addFront <elem> <list>:    add <elem> to the <list>'s front
 del <elem> <list>:         delete <elem> from the <list>
 n <list>:                  count length (number of elems) of <list>
 pos <elem> <list>:         find position of <elem> in <list>
 pop <n> <list>:            pop <n> elems from right of <list> - return list on <list>
 rewind <list>:             turn <list> around
 shift <n> <list> [|list]:  pop <n> elems from left of <list> - return list on 3rd list
 sort <list>:               sort <list> alphabetically
 
 some <cmds> are tests:
 in <elem> <list>:          exits 0 if true/1 if false, says nothing
 first <elem> <list>:       exits 0 if true/1 if false, says nothing
 last <elem> <list>:        exits 0 if true/1 if false, says nothing