Shell Script-Hilfe!

flappinski

flappinski

Foren As
Hallo Wolfgang,
ich habe flogendes Shell-Script nachgekocht:
Beim Original kann ich die Variablen ändern und sie werden dann auch geändert dargestellt. Bei meiner Kopie ist es nötig, die Variablen aus der Datei Switch.in auszulesen, in der Parameter mit jeweilingen Werten drin stehen. Es klappt auch soweit, dass die Werte in den Dialog übernommen werden (Stolz), nur leider kann ich sei zwar verändern, aber sie werden immer wieder auf den Originalwert zurückgesetzt.
Vielleicht kannst Du ja einen kurzen Blick drauf werfen,
Danke,
Stephan


#! /bin/bash
# $Id: inputmenu,v 1.4 2003/10/09 22:39:35 tom Exp $
# 2002 - written by Tobias Rittweiler <tobrit@freebits.de>
: ${DIALOG=dialog}

declare -i cnt=0 # eine wundervolle Integer


declare -a Para # ein nettes Array
declare -a Value # ein nettes Array

exec 3<>Switch.in # nutze exec um die Subshell zu vermeiden

while read V1 V2 V3 ; do # lese Datei zeilenweise
Para[$cnt]=$V1
Value[$cnt]=$V2
let cnt++
done <&3

exec 3>&-
let cnt--

while [ ${returncode:-99} -ne 1 -a ${returncode:-99} -ne 250 ]; do
exec 3>&1
value=$("$DIALOG" --clear --ok-label "Create" \
--backtitle "An Example for the use of --inputmenu:" \
--inputmenu "Originally I designed --inputmenu for a \
configuration purpose. Here is a possible piece of a configuration program. \
" 20 50 10 \
"${Para[0]}" "${Value[0]}" \
"${Para[1]}" "${Value[1]}" \
${Para[2]} ${Value[2]} \
${Para[3]} ${Value[3]} \
${Para[4]} ${Value[4]} \
2>&1 1>&3 )
returncode=$?
exec 3>&-
case $returncode in
1)
"$DIALOG" --clear --backtitle "An Example for the use of --inputmenu:" \
--yesno "Really quit?" 10 30
case $? in
0) break;;
1) returncode=99;;
esac
;;
0)
"$DIALOG" --clear --backtitle "An Example for the use of --inputmenu:" \
--msgbox "$(useradd -d "$home" -u "$uid" -g "$gid" "$user" 2>&1)" 10 40
;;
3)
value="${value:8:${#value}}"
tag="${value%:*}"
item="${value#*: }"

case "$tag" in
# ${Para[0]}) ${Value[0]}="$item";;
"${Para[0]}") break;;
${Para[1]}) break;;
${Para[2]}) Value[2]="$item";;
${Para[3]}) Value[3]="$item";;
esac

esac
done



Hier ist das Original:

# 2002 - written by Tobias Rittweiler <tobrit@freebits.de>
: ${DIALOG=dialog}

user="$USER" ; uid="$UID" ;
gid="$GROUPS" ; home="$HOME" ;

while [ ${returncode:-99} -ne 1 -a ${returncode:-99} -ne 250 ]; do
exec 3>&1
value=$("$DIALOG" --clear --ok-label "Create" \
--backtitle "An Example for the use of --inputmenu:" \
--inputmenu "Originally I designed --inputmenu for a \
configuration purpose. Here is a possible piece of a configuration program. \
" 20 50 10 \
"Username:" "$user" \
"UID:" "$uid" \
"GID:" "$gid" \
"HOME:" "$home" \
2>&1 1>&3 )
returncode=$?
exec 3>&-
case $returncode in
1)
"$DIALOG" --clear --backtitle "An Example for the use of --inputmenu:" \
--yesno "Really quit?" 10 30
case $? in
0) break;;
1) returncode=99;;
esac
;;
0)
"$DIALOG" --clear --backtitle "An Example for the use of --inputmenu:" \
--msgbox "$(useradd -d "$home" -u "$uid" -g "$gid" "$user" 2>&1)" 10 40
;;
3)
value="${value:8:${#value}}"
tag="${value%:*}"
item="${value#*: }"

case "$tag" in
Username) user="$item";;
UID) uid="$item";;
GID) gid="$item";;
HOME) home="$item";;
esac

esac
done
 

Ähnliche Themen

E/A-Fehler (.snapshots is not a btrfs subvolume).

Verschlüsseltes Backup-Script mit rsync

Zugriff Ubuntu 16.04. auf Freigabe 18.04. LTS nicht möglich

[Gelöst] Suchen und ersetzen mit Hilfe mehrerer Parameter

[Perl] Perl OO Methodenaufruf in anderem Objekt

Zurück
Oben