Может кто-нибудь помочь мне понять этот сценарий? Это из sysconf_add, и я новичок в сценариях.
Мне нужно сделать что-то подобное.

function add_word() {  
    local word=$1  
    local word_quoted=$2  
    if ! word_present; then  
        $debug && cp $file $tmpf  
        sed -i -e "${lineno} {   
            s/^[[:space:]]*\($var=\".*\)\(\".*\)/\1 $word_quoted\2/;   
            s/=\" /=\"/   
            }" $file  
        $debug && diff -u $tmpf $file  
    else  
        echo \"$word\" already present  
    fi  
    # some balancing for vim"s syntax highlighting  
}  

1 ответ1

1

Это хороший ресурс для sed

Для вашего примера выше:

  • Флаг -i означает "редактировать на месте" (только GNU sed), это редактирует $file на месте
  • Флаг -e объединяет несколько команд.
  • Первая команда в вашем примере, похоже, заменяет экземпляры $var="<stuff>" вторым аргументом, передаваемым сценарию.
  • Вторая команда удаляет завершающий пробел после последовательности =" (например, foo=" bar " станет foo="bar ")

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