Guest User

Untitled

a guest
Nov 19th, 2018
96
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.35 KB | None | 0 0
  1. #!/usr/bin/env bash
  2.  
  3. CONF_TEMP="conf.temp"
  4.  
  5. makeConfigCache() {
  6. local conf_file="$1"
  7.  
  8. local line conf_group conf_group_name conf_name conf_val conf_level
  9. local conf_level=0
  10.  
  11. declare -a conf_group
  12.  
  13. while read line ; do
  14. [[ "${line:0:2}" == "//" ]] && continue
  15.  
  16. line=`echo "$line" | sed 's/ =/=/g' | sed 's/= /=/g'`
  17.  
  18. conf_name="${line%=*}"
  19. conf_name="${conf_name// /}"
  20.  
  21. [[ -z "$conf_name" ]] && continue
  22.  
  23. conf_val="${line#*=}"
  24.  
  25. if [[ -z "$conf_val" || "${conf_name}" == "$conf_val" ]] ; then
  26. if [[ "${conf_name:0:1}" == "{" ]] ; then
  27. conf_level=$(($conf_level + 1))
  28. elif [[ "${conf_name:0:1}" == "}" ]] ; then
  29. unset conf_group[$conf_level]
  30. conf_level=$(($conf_level - 1))
  31. else
  32. conf_group[$conf_level]="$conf_name"
  33. conf_group_name="${conf_group[@]}"
  34. conf_group_name="${conf_group_name/ /_}"
  35. fi
  36. else
  37. conf_val="${conf_val//;/}"
  38. conf_val=`echo $conf_val`
  39.  
  40. echo "${conf_group_name}_${conf_name}=${conf_val}" >> $CONF_TEMP
  41. fi
  42. done < <(awk 1 $conf_file)
  43. }
  44.  
  45. getValList() {
  46. local pattern="$1"
  47.  
  48. local line
  49.  
  50. while read line ; do
  51. if [[ $line =~ $pattern ]] ; then
  52. echo "${line//${pattern}_/}"
  53. fi
  54. done < <(awk 1 $CONF_TEMP)
  55. }
  56.  
  57. rm -f $CONF_TEMP
  58.  
  59. makeConfigCache $1
  60. getValList "services"
  61. getValList "services" | cut -f1 -d"="
Add Comment
Please, Sign In to add comment