echo3 |
5 Beispiele für die Verarbeitung von Parametern
|
| |
.1 |
echo "$0 wurde mit $# Parameter(n) aufgerufen."
echo "Die ersten drei Parameter haben die Werte:"
echo " $1"
echo " $2"
echo " $3"
|
| |
.2 |
echo "$0 wurde mit $# Parameter(n) aufgerufen."
echo "Die ersten drei Parameter haben die Werte:"
echo " $1"; shift
echo " $1"; shift
echo " $1"
|
| |
.3 |
echo "$0 wurde mit $# Parameter(n) aufgerufen."
echo "Die ersten drei Parameter haben die Werte:"
if test "$1"
then
echo " $1"; shift
if test "$1"
then
echo " $1"; shift
if test "$1"
then
echo " $1"
fi
fi
fi
|
| |
.4 |
echo "$0 wurde mit $# Parameter(n) aufgerufen."
echo "Die ersten drei Parameter haben die Werte:"
[ $
[ $
[ $
|
| |
.4a |
echo "$0 wurde mit $# Parameter(n) aufgerufen."
echo "Die ersten drei Parameter haben die Werte:"
[ $
[ $
[ $
|
| |
.5 |
echo "$0 wurde mit $# Parameter(n) aufgerufen."
echo "Die Parameter haben die Werte:"
while [ $
do
echo " $1"; shift
done
|
| |
Optionen |
Verarbeitung von Optionen mit einem case-Verteiler
|
|
while [ $
do
case "$1" in
-c | -o) echo "Option -c oder -o"
;;
-*) echo "unbekannte Option $1"
;;
*.c | *.h ) echo "C Quelle $1"
break
;;
*) echo "unbekannter Parameter $1"
exit 1
esac
shift
done
|
| |
bundle |
ein einfaches Skript zum Bündeln von Textdateien
in Form eines sich selbst entpackenden Archivs
|
| |
|
echo '#!/bin/bash'
echo '# zum Auspacken, sh auf diese Datei anwenden'
for i in $*
do
echo "echo $i 1>&2"
echo "cat >$i <<'Ende von $i'"
cat $i
echo "Ende von $i"
done
|
| |
2.Version |
Bündeln von ganzen Verzeichnisbäumen
in Form eines sich selbst entpackenden Archivs
|
| |
|
echo "$0 : fuer dateien $*" 1>&2
echo '#zum Auspacken, sh auf diese Datei anwenden'
for i in $*
do
if [ -f $i ] && [ -r $i ] && [ -s $i ]
then
echo "echo $i 1>&2"
echo "cat >$i <<'Ende von $i'"
cat $i
echo "Ende von $i"
elif [ -d $i ]
then
$0 $i/*
else
echo "# datei $i konnte nicht kopiert werden"
echo "datei $i kann nicht kopiert werden" 1>&2
fi
done
|
| |
3.Version |
sicheres Bündeln von ganzen Verzeichnisbäumen
ohne Probleme mit den Endemarken in inline-Dokumenten
|
| |
|
echo '#!/bin/bash'
echo '# zum Auspacken /bin/bash auf diese Datei anwenden'
for i in $*
do
if [ -f $i ] && [ -r $i ] && [ -s $i ]
then
echo "echo $i 1>&2"
echo "sed 's/^+//' >$i <<'Ende von $i'"
sed 's/^/+/' $i
echo "Ende von $i"
elif [ -d $i ]
then
echo "[ -d $i ] || mkdir $i"
$0 $i/*
else
echo "# datei $i konnte nicht kopiert werden"
echo "datei $i kann nicht kopiert werden" 1>&2
fi
done
|
| |
4.Version |
sicheres Bündeln von ganzen Verzeichnisbäumen
ohne Probleme mit Sonderzeichen in Dateinamen
|
| |
Problem |
Sonderzeichen in Dateinamen
|
|
touch "a b c"
for i in a*
do
ls -l $i
done
for i in a*
do
ls -l "$i"
done
|
| |
Lösung |
für bundle
|
|
echo '#!/bin/bash'
echo '# zum Auspacken /bin/bash auf diese Datei anwenden'
for i in "$@"
do
if [ -f "$i" ] && [ -r "$i" ] && [ -s "$i" ]
then
echo "echo \"$i\" 1>&2"
echo "sed 's/^+//' > \"$i\" <<'Ende von $i'"
sed 's/^/+/' "$i"
echo "Ende von $i"
else
if [ -d "$i" ]
then
echo "[ -d \"$i\" ] || mkdir \"$i\""
for j in "$i/"*
do
$0 "$j"
done
else
echo "# datei $i konnte nicht kopiert werden"
echo "datei $i kann nicht kopiert werden" 1>&2
fi
fi
done
|
| |
|
schrittweise Verfeinerung und Vervollständigung von
Skripten
|