Tek-Tips is the largest IT community on the Internet today!

Members share and learn making Tek-Tips Forums the best source of peer-reviewed technical information on the Internet!

  • Congratulations TouchToneTommy on being selected by the Tek-Tips community for having the most helpful posts in the forums last week. Way to Go!

creating a preferences file

Status
Not open for further replies.

revilord

Programmer
Oct 2, 2003
64
I am trying to read a preferences file to use with a program. I am using ksh script. The file looks something like this.
EDITOR vi
PRINTER hp
DIR MyDirectory
...

I can write to the file but many attempts to read the preferences into variables have failed. Has anyone done this before. I am not having any luck.
 
This is how I personally deal with preferences:
Code:
#!/bin/ksh
: cmd/def.fct   # Fonctions de gestion des valeurs par defaut
# === Init fichier ===
IniDef() {      # IniDef fic
  [ $# -eq 1 ] || return
  DefDir=${MyDir:-/PHV}/defval; [ -d $DefDir ] || mkdir -m 775 $DefDir
  ficDef=$DefDir/$1
  [ -s $ficDef ] || {
    echo "# $1 : Valeurs par defaut" >$ficDef; chmod 664 $ficDef
  }
}
# === Recup valeur ===
GetDef() {      # GetDef fic nom val ou val=$(GetDef fic nom)
  [ $# -ge 2 -a $# -le 3 ] || return
  nomDef=$2; valDef=${3-tmpDef}
  IniDef $1 && {
    eval $valDef=\"$(awk -F= '$1=="'$nomDef'"{print $2;exit}' $ficDef)\"
    case $valDef in tmpDef) echo "$tmpDef";; esac
  } && unset ficDef nomDef valDef tmpDef
}
# === Memo valeur ===
PutDef() {      # PutDef fic nom val
  [ $# -eq 3 ] || return
  nomDef=$2; valDef=$3
  IniDef $1 && {        #FIXME: Pb de concurrence
    umDef=$(umask); umask 002
    (grep -v "^$nomDef=" $ficDef; echo "$nomDef=$valDef") |
      LANG=${LangC:=C} sort -o $ficDef.tmp && mv $ficDef.tmp $ficDef
    umask $umDef
  } && unset ficDef nomDef valDef umDef
}
# === Purge valeur ===
DelDef() {      # DelDef fic nom
  [ $# -eq 2 ] || return
  nomDef=$2
  IniDef $1 && {        #FIXME: Pb de concurrence
    umDef=$(umask); umask 002
    grep -v "^$nomDef=" $ficDef |
      LANG=${LangC:=C} sort -o $ficDef.tmp && mv $ficDef.tmp $ficDef
    umask $umDef
  } && unset ficDef nomDef umDef
}
# === Toutes les valeurs ===
AllDef() {      # AllDef fic
  [ $# -eq 1 ] && IniDef $1 && . $ficDef && unset ficDef
}
If you have any question, feel free to post back, as I know the comments aren't in english...

Hope This Helps, PH.
Want to get great answers to your Tek-Tips questions? Have a look at FAQ219-2884 or FAQ222-2244
 
Status
Not open for further replies.

Part and Inventory Search

Sponsor

Back
Top