#!/bin/bash
source /data/output/QAScripts/conf.ini
var=$($1path)
echo $var
conf.ini
файл конфигурации, который имеет LSTpath=/data/bb/loader
Я добираюсь ниже ниже ошибки. Где я иду не так, как надо.
./file LST
line 8: LSTpath: command not found
Можно решить его с помощью eval
.
eval - construct command by concatenating arguments
Изменяют Ваш сценарий следующим образом:
#!/bin/bash
source /data/output/QAScripts/conf.ini
eval var=' затем выполняет его как это:
$ ./foo LST
/data/bb/loader
, где,
$ cat /data/output/QAScripts/conf.ini
LSTpath=/data/bb/loader
"$1"path
echo $var
затем выполняет его как это:
$ ./foo LST
/data/bb/loader
, где,
$ cat /data/output/QAScripts/conf.ini
LSTpath=/data/bb/loader
Используя awk
, мне не нравится eval
;)
Ваш var=$($1path)
выполняет первый параметр Вашего сценария ($1
), связанного с path
как команда. Поэтому ошибка.
Ваш новый сценарий
#!/bin/bash
var=$(awk -F= '/^'"$1"'path/ {print $2}' /data/output/QAScripts/conf.ini)
echo "$var"
Ваш /data/output/QAScripts/conf.ini
LSTpath=/data/bb/loader
<час> Пример
$ ./foo LST
/data/bb/loader
Используя grep
, оценка :(
Принятие source
используется для загрузки переменных для получения пути от conf.ini
Вывод script.sh
#!/bin/bash var=`grep $1 /data/output/QAScripts/conf.ini | grep -oP '[^'$1'path\=](.*)'` echo $var
conf.ini
LSTpath=/data/bb/loader #following added to demonstrate LSApath=/data/bb/A LSBpath=/data/bb/B LSCpath=/data/bb/C
: Дисплеи согласно аргументу спасибо var
root@controller:~# ./script.sh LST /data/bb/loader root@controller:~# ./script.sh LSA /data/bb/A root@controller:~# ./script.sh LSB /data/bb/B root@controller:~# ./script.sh LSC /data/bb/C root@controller:~#
:)