Это скрипт, который помогает нам создать файл dhcpd.conf.Bash: Невозможно добавить строку в существующую строку - вместо этого она перезаписывает начало этой строки.
входы выборки (язычок Mac ех -; - вкладка-IP.)
DC:D3:21:75:61:90 ; 10.25.131.17
;
Ожидаемые результаты
Host 27-48 { hardware ethernet DC:D3:21:75:61:90 ; fixed-address 10.25.131.17 ; }
#host 27-48 { hardware ethernet ; fixed-address ; }
В настоящее время линия, выводимый заключается в следующем:
Host 27-48 { hardware ethernet 00:16:6B:C8:3D:C9 ; fixed-address 10.25.129.185
Удельная строка в коде Я застрял на
outputLine="Host $((names[i]))-$((startingNumber+counter)) { hardware ethernet $first ; fixed-address $second"
Если я попробую добавить; }
outputLine="Host $((names[i]))-$((startingNumber+counter)) { hardware ethernet $first ; fixed-address $second ; }"
я получаю это:
; } 27-48 { hardware ethernet 00:16:6B:C8:3D:C9 ; fixed-address 10.25.129.185
Вопрос в том, когда я добавить «;}» к концу предыдущей строки, она переписывает начало строки. Я пробовал несколько трюков, чтобы обойти это, например, написать вышеприведенную строку в строку, а затем попытаться добавить к строке, но та же проблема возникает. У меня возникла идея экспортировать все содержимое в файл и повторно перезагрузить файл в массив, чтобы я мог добавить его, но он кажется немного переборщиком.
for ((j=1; j<=${sizes[i]}; j++)); do
#split line, read split as two entries for an arrIN
IN=(${line[counter+1]})
arrIN=(${IN//;/ })
first="${arrIN[0]}"
second=${arrIN[1]}
if [ ${lineSize[counter+1]} -gt 5 ]
then
#sed 's/$/ ; }/' $outputLine > newoutputLine
outputLine="Host $((names[i]))-$((startingNumber+counter)) { hardware ethernet $first ; fixed-address $second"
echo $outputLine
else
echo "#host $((names[i])) $((startingNumber+counter)) { hardware ethernet ; fixed-address ; }"
fi
counter=$((counter+1))
done
Попробуйте напечатать '$ second' - может быть есть что-то смешное в конце' $ {arrIN [1]} ' – mustaccio
Государственные ваши входные переменные четко и обеспечивают точный ожидаемый выход. Ваш код 'bash' создает файл' dhcpd.conf' или вы просто хотите отредактировать этот файл на месте с помощью '; } 'в конце? – Inian
обновленный образец ввода. Bash-код не создает dhcpd.conf, а только его часть, которая в конечном итоге будет объединена с частью подсети (то есть скопировать и вставить). Один выход уже предоставлен, будет обновлять вывод для другого «пустого случая» – thistleknot