Прошу подмоги (bash)

На самом деле это единственный раздел про unix на этом форуме

Модераторы: /dev/random, Модераторы разделов

Аватара пользователя
Dr.SMP
Сообщения: 233
ОС: Agilia & Frugalware

Прошу подмоги (bash)

Сообщение Dr.SMP »

смысл кода - если какой-либо строчки нет, то она добавляется в файл, если есть - соотв-но не добавляется

проблема - если делать все на if'ах то работает:

Код: Выделить всё

 if [ $(grep "tmpfs" /etc/fstab | gawk '{print $2}') -ne "/var/log" ]
then
    echo "tmpfs /var/log tmpfs defaults,noatime,mode=0777 0 0" >> /etc/fstab
fi
if [ $(grep "tmpfs" /etc/fstab | gawk '{print $2}') -ne "/var/tmp" ]
then
    echo "tmpfs /var/tmp tmpfs defaults,noatime,mode=0777 0 0" >> /etc/fstab
fi
if [ $(grep "tmpfs" /etc/fstab | gawk '{print $2}') -ne "/tmp" ]
then
    echo "tmpfs /tmp tmpfs defaults,noatime,mode=0777 0 0" >> /etc/fstab
fi



но хочется код попроще (который не работает :console::( ):

Код: Выделить всё

for i in "/var/log" "/var/tmp" "/tmp"
do
  if [ -z "$( grep "tmpfs " $i /etc/fstab )" ]
  then
      echo "tmpfs " $i " tmpfs defaults,noatime,mode=0777 0 0" >> /etc/fstab
  else
      echo "$i"              #ошибка
  fi
done


подскажите что я неверно делаю
Не спеши, а то успеешь, следствие - тише едешь точнее диагноз.
Блог арчевода - http://grif12.blogspot.com
Спасибо сказали:
Аватара пользователя
SLEDopit
Модератор
Сообщения: 4823
Статус: фанат консоли (=
ОС: GNU/Debian, RHEL

Re: Прошу подмоги (bash)

Сообщение SLEDopit »

а какая преследуется конечная цель?
не проще ли держать образцовый fstab и смотреть если есть различия с действующим, то заменять его?

Код: Выделить всё

#!/bin/bash
if [ "$(diff /path/to/original/fstab /etc/fstab)" ]
then
cp /path/to/original/fstab /etc/fstab
fi
UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity. © Dennis Ritchie
The more you believe you don't do mistakes, the more bugs are in your code.
Спасибо сказали:
Аватара пользователя
broom
Бывший модератор
Сообщения: 1629
Статус: мизантроп.ка
ОС: Gentoo

Re: Прошу подмоги (bash)

Сообщение broom »

А можно как-нибудь так:

Код: Выделить всё

#!/bin/sh
for i in /var/log /var/tmp /tmp
do
        if ! grep -q "tmpfs[[:space:]]*$i" /etc/fstab; then
                echo "tmpfs " $i " tmpfs defaults,noatime,mode=0777 0 0" >> /etc/fstab
        fi
done
but in the darkness, behind your smile, you scream... © Dio
Спасибо сказали:
Аватара пользователя
Dr.SMP
Сообщения: 233
ОС: Agilia & Frugalware

Re: Прошу подмоги (bash)

Сообщение Dr.SMP »

SLEDopit конечная цель добавить строки если их нет, по поводу копирования файлов - как раз я хотел избавиться от него и делать все из скрипта.

broom спасибо, все работает, счас сижу и думаю почему:)
Не спеши, а то успеешь, следствие - тише едешь точнее диагноз.
Блог арчевода - http://grif12.blogspot.com
Спасибо сказали:
Аватара пользователя
LuckyStr
Сообщения: 159
ОС: Fedora

Re: Прошу подмоги (bash)

Сообщение LuckyStr »

Dr.SMP писал(а):
07.09.2009 15:50
смысл кода - если какой-либо строчки нет, то она добавляется в файл, если есть - соотв-но не добавляется

проблема - если делать все на if'ах то работает:

Код: Выделить всё

 if [ $(grep "tmpfs" /etc/fstab | gawk '{print $2}') -ne "/var/log" ]
then
    echo "tmpfs /var/log tmpfs defaults,noatime,mode=0777 0 0" >> /etc/fstab
fi
if [ $(grep "tmpfs" /etc/fstab | gawk '{print $2}') -ne "/var/tmp" ]
then
    echo "tmpfs /var/tmp tmpfs defaults,noatime,mode=0777 0 0" >> /etc/fstab
fi
if [ $(grep "tmpfs" /etc/fstab | gawk '{print $2}') -ne "/tmp" ]
then
    echo "tmpfs /tmp tmpfs defaults,noatime,mode=0777 0 0" >> /etc/fstab
fi



но хочется код попроще (который не работает :console::( ):

Код: Выделить всё

for i in "/var/log" "/var/tmp" "/tmp"
do
  if [ -z "$( grep "tmpfs " $i /etc/fstab )" ]
  then
      echo "tmpfs " $i " tmpfs defaults,noatime,mode=0777 0 0" >> /etc/fstab
  else
      echo "$i"              #ошибка
  fi
done


подскажите что я неверно делаю


просто открой файл и добавь все необходимые строчки и не важно были они там или не было их там
Это наш химический дом для печальных жителей Земли!
Спасибо сказали:
Аватара пользователя
Dr.SMP
Сообщения: 233
ОС: Agilia & Frugalware

Re: Прошу подмоги (bash)

Сообщение Dr.SMP »

LuckyStr писал(а):
07.09.2009 17:27
просто открой файл и добавь все необходимые строчки и не важно были они там или не было их там


благодарю за остроумный ответ, и стоило скрипт писать? как я раньше не догадался?)))
мне нужно чтоб это делалось АВТОМАТИЧЕСКИ т.е. без моего участия, т.е. чтоб программа написанная на скриптовом языке bash делала все это САМА, т.е. (то есть) добавляла все необходимые строчки и не важно были они там или не было их там
Не спеши, а то успеешь, следствие - тише едешь точнее диагноз.
Блог арчевода - http://grif12.blogspot.com
Спасибо сказали: