Optimierung einer Befehlsreihe mit Positionsparametern $1 bis $8

17/12/2007 - 14:51 von Thomas Wiedmann | Report spam
Hallo,

ich wollte mir per Skript die Werte von Positionsparametern 8-spaltig
ausgeben lassen und hatte dazu folgendes Bash-Skript geschrieben:


#!/bin/bash

CNTFIELDS=8
while [ $# -ge $CNTFIELDS ]; do
echo -n "$1 "
echo -n "$2 "
echo -n "$3 "
echo -n "$4 "
echo -n "$5 "
echo -n "$6 "
echo -n "$7 "
echo -n "$8 "
echo
shift $CNTFIELDS
done


Die 8 aufeinanderfolgenden echo-Befehle erscheinen mir unschön und
optimierungsfàhig. Welche Möglichkeit(en) gibt es, z. B. eine for-Schleife
nach dem Muster

for $i in `seq $CNTFIELDS`; do ...

o. à. so in die while-Schleife einzufügen, daß eben jeweils 8
Positionsparameter verarbeitet werden, ohne dafür 8 einzelne echo-Statements
schreiben zu müssen?


Danke für alle guten Tips.

Thomas Wiedmann
 

Lesen sie die antworten

#1 Daniel Rock
17/12/2007 - 15:13 | Warnen spam
Thomas Wiedmann wrote:
o. à. so in die while-Schleife einzufügen, daß eben jeweils 8
Positionsparameter verarbeitet werden, ohne dafür 8 einzelne echo-Statements
schreiben zu müssen?


Danke für alle guten Tips.



Wie wàre es mit einem weiteren Zàhler, der eine neue Zeile einfgt, wenn
er bei 8 angekommen ist, ungefàhr so:

c=0
NCOL=8
for arg in "$@"; do
printf '%s ' "$arg"
c=$((c + 1))
if [ $c -eq $NCOL ]; then
c=0
printf ''
fi
done

Ähnliche fragen