Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование в *nix (http://forum.oszone.net/forumdisplay.php?f=35)
-   -   [решено] Откинуть значение после знака равно (http://forum.oszone.net/showthread.php?t=318243)

blackeangel 28-08-2016 10:38 2663708

Откинуть значение после знака равно
 
Всем привет. Пишу функцию, но что то встрял в одном месте:
Код:

setprop(){
bp=/system/build.prop
if [-f "$bp"]; then #проверяем есть ли файл
    par=$($8) #вот тут отсекаем все что после "="
    if grep -q "$par" $bp; then #ищем есть ли в файле левая часть (до "=")
        sed -i '/$par=*/$8/g' $bp #заменяем строку содержащую левую часть на новую
    else
        echo "$8" >> $bp #если нет строки - добавляем
    fi
else
echo "System not installed!" #если файла нет - выходим
exit
fi
}

Как откинуть после равно?
Да и посмотреть профессиональным взглядом не помешало бы. По поводу будет ли sed есть такую подмену?

MakaBooka 29-08-2016 13:16 2663885

в чём конечный смысл этих телодвижений?

blackeangel 29-08-2016 13:21 2663886

MakaBooka, заменить или дописать значение в файл

MakaBooka 29-08-2016 14:01 2663895

ну и в целом....
в скриптах желательно ИМХО избегать ветвлений и обработку вести кратко

Код:

# если файл не существует - выходим с ошибкой 3
[-f "$bp"]  || exit 3
# существует, отлично, продолжаем работу

конструкций
Код:

par=$($8)
ИМХО надо избегать без необходимости

во-первых, потому что есть более универсальная конструкция
Код:

. /path/program.conf
подлючили файл, конструкции типа "parameter666=value777" отработали, можно проверять наличие переменной parameter666, её значение.

По поводу sed-а.... проверки можно подсвернуть, обработав в таком виде:
- если параметр установлен, его удалить
- в конец добавить строку с параметром.

Код:

sed -i '/$par=/d; $ a \$par=$8' $bp

blackeangel 29-08-2016 14:09 2663901

MakaBooka, что не понятного в слове заменить? Не удалить и добавить, а ЗАМЕНИТЬ!
Имхо, код должен быть читабельным и через год и через 2, при условии что в это вникается разово и все забудется.

MakaBooka 29-08-2016 14:16 2663906

Цитата:

Цитата blackeangel
что не понятного в слове заменить? Не удалить и добавить, а ЗАМЕНИТЬ! »

если параметры в конфиге позиционно независимы, это равнозначно

Цитата:

Цитата blackeangel
Имхо, код должен быть читабельным и через год и через 2 »

верно. поэтому одна функция с тремя ветвлениями раскатанная на 12 строк хуже, чем 4 строки с ветвлением в одной строке.

blackeangel 30-08-2016 05:45 2664063

MakaBooka, еще раз повторюсь заменить, значит заменить. И если говорят что заменить значит так и нужно. Не надо менять условия задачи.


Время: 09:07.

Время: 09:07.
© OSzone.net 2001-