На самом деле это единственный раздел про unix на этом форуме
Модераторы: /dev/random , Модераторы разделов
Dr.SMP
Сообщения: 233
ОС: Agilia & Frugalware
Сообщение
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
но хочется код попроще (который не работает
):
Код: Выделить всё
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
подскажите что я неверно делаю
SLEDopit
Модератор
Сообщения: 4823
Статус: фанат консоли (=
ОС: GNU/Debian, RHEL
Сообщение
SLEDopit » 07.09.2009 16:05
а какая преследуется конечная цель?
не проще ли держать образцовый 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
Сообщение
broom » 07.09.2009 16:20
А можно как-нибудь так:
Код: Выделить всё
#!/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
Сообщение
Dr.SMP » 07.09.2009 16:27
SLEDopit конечная цель добавить строки если их нет, по поводу копирования файлов - как раз я хотел избавиться от него и делать все из скрипта.
broom спасибо, все работает, счас сижу и думаю почему
LuckyStr
Сообщения: 159
ОС: Fedora
Сообщение
LuckyStr » 07.09.2009 17:27
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
Сообщение
Dr.SMP » 07.09.2009 17:53
LuckyStr писал(а): ↑ 07.09.2009 17:27
просто открой файл и добавь все необходимые строчки и не важно были они там или не было их там
благодарю за остроумный ответ, и стоило скрипт писать? как я раньше не догадался?)))
мне нужно чтоб это делалось АВТОМАТИЧЕСКИ т.е. без моего участия, т.е. чтоб программа написанная на скриптовом языке bash делала все это САМА, т.е. (то есть) добавляла все необходимые строчки и не важно были они там или не было их там