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
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