2015-11-27 3 views
0

У меня есть параметры файла, который получил данные, как приведены нижеПрисвоение значений переменным в оболочке scipt

#host1 credentials 
Host1=192.168.1.1 
password=host1Password 

#host2 credentials 
Host2=192.168.1.2 
password=host2password 

Я хочу, чтобы разобрать через эту информацию в текстовом файле, используя скрипт и назначить эти значения переменным.

$host1 = 192.168.1.1 
$password1 = host1password 

$host2 = 192.168.1.2 
$password2 = host2password 

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

+0

@ hek2mgl источника файл получит 'password' перезаписаны. также пробелы (если есть) могут привести к проблеме. – Kent

+0

@Kent Вы правы, 'источник' здесь не может быть использован. Пропустил тот факт, что * пароль * встречается дважды. – hek2mgl

+0

Вы действительно хотите использовать shell-скрипты? Например, это может быть проще понять в Python или Ruby. –

ответ

1

Я хотел бы использовать оболочку, которая реализует массивы (Баш или КШ), и сделать это:

hosts=() 
passwords=() 

# read the file, populate the arrays  
while IFS="=" read -r key value; do 
    case $key in 
     password) passwords+=("$value") ;; 
     Host*) hosts+=("$value") ;; 
    esac 
done < params 

# print the contents of the arrays 
for ((i=0; i < ${#hosts[@]}; i++)); do 
    printf "%d\t%s\t%s\n" $i "${hosts[i]}" "${passwords[i]}" 
done 
0 192.168.1.1 host1Password 
1 192.168.1.2 host2password 
Смежные вопросы