-1

Мне нужно прочитать файл конфигурации и назначить в сценарии переменные и пропустить закомментированные строки,

Пример файла конфигурации:

# This is sample configuration file
SRV_IP=192.168.1.12
DB_IP=192.168.1.10
DB_PORT=3306

Мне нужно прочитать этот файл конфигурации и войти в сценарий оболочки.

Как ниже

Пример сценария

#!/bin/bash

echo " Reading configuration file $1 "

echo " Server IP = $SRV_IP
    Database IP = $DB_IP
    Database Port = $DB_PORT"

После выполнения вышеприведенного скрипта выведите примерно так:

./read_conf.sh sample.conf

Вывод как ниже

Server IP = 192.168.1.12
Database IP = 192.168.1.10
Database Port = 3306

После выполнения скрипта внутри текущей оболочки или внутри скрипта каждая переменная имеет значения, указанные в конфигурационном файле $ SRV_IP, имеют значение 192.168.1.12 без использования встроенного командного интерпретатора оболочки.

Когда бы ни использовались переменные внутри скрипта, он должен иметь значения, указанные в файле конфигурации.

1 ответ1

0

С помощью скрипта ниже сделал это.

#!/bin/bash

echo " Reading configuration file $1 "

conf_file=$1

while IFS= read -r line; do
  line=${line%%#*}
  case $line in
    *=*)
      var=${line%%=*}
      case $var in
        *[!A-Z_a-z]*)
          echo "Warning: invalid variable name $var ignored" >&2
          continue;;
      esac
      if eval '[ -n "${'$var'+1}" ]'; then
        echo "Warning: variable $var already set, redefinition ignored" >&2
        continue
      fi
      line=${line#*=}
      eval $var='"$line"'
  esac
done <"$conf_file"

echo "Current values after reading configuration file"

echo " Server IP = $SRV_IP
    Database IP = $DB_IP
    Database Port = $DB_PORT"

exit 0

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .