LINUX.ORG.RU

Задачка bash

 , ,


0

1

Есть кусочек кода.

if grep -q "$1" $file
then
        echo "YES, found."
        echo "Defeated. Man, look at me!" | /usr/local/sbin/sendsms $PHONE
IFS= contents=$(cat "$fdomain")
        echo $contents | head -n 1
        echo $contents | tail -n +2 > "$fdomain"
mysql -hХОСТ -P3306 -uлогин -pпароль  ололо -s -N -e "UPDATE база SET exit_stream=REPLACE(exit_stream,'$result','$contents')"
mysql -hХОСТ -P3306 -uлогин -pпароль  ололо -s -N -e "UPDATE база SET url=REPLACE(url,'$result','$contents')"
else
        echo "bro, no :("
fi
rm file1

Переменная fdomain - это файл с содержимым: строка1 строка2 строка3 строка4

Вот так вот, что если выполняется условие «q »$1" $file" то из файла fdomain берется первая строчка. Файл сохраняется и получается уже строка2 строка3 строка4

И эта первая строчка ( строка1 ) сохраняется в переменную contents. Далее происходит 2 запроса, которые меняют в базе данных некоторые параметры.. Так вот Данный кусочек кода бажный. Он берет и в contents записывает не «строка1» а «строка1строка2строка3строка4», при этом в fdomains вроде все ок. Подскажите, где ошибка в коде. Спасибо



Последнее исправление: sleepnow (всего исправлений: 1)

Что ты пытался добиться вот этим IFS= contents=$(cat «$fdomain»)?

zolden ★★★★★
()
- IFS=
+ IFS=" "
anonymous
()

И эта первая строчка ( строка1 ) сохраняется в переменную contents

с чего ты взял?

contents=$(cat «$fdomain»)

у тебя весь файл в $contents кладется

первая строчка это
contents=$(head -n 1 «$fdomain»)

вообще опиши нормально, как алгоритм _должен_ работать

marvin_yorke ★★★
()
Ответ на: комментарий от marvin_yorke

Спасибо. Смотрите.. если выполняется условие «$1» $file, то идет обращение к файлу file.data($fdomain). Содержимое файла такое:

строка1
строка2
строка3
строка4
строкаN...
Так вот после этого обращения в переменную $contents записывается ПЕРВАЯ строчка из файла $fdomain, и вторая строчка теперь автоматически становится первой. т.е. файл сохраняется так:
строка2
строка3
строка4
строкаN...
И на выходе остается 2 переменные.. $contents ( первая строчка файла $fdomain ) и $result, после чего выполняется mysql запрос. И так до след. раза.

sleepnow
() автор топика
Ответ на: комментарий от AITap

Спасибо. Это он берет строчку оттуда.. а как ее вырезать, таким образом, что бы вторая становилась первой? а первая - в переменную.

sleepnow
() автор топика
Ответ на: комментарий от sleepnow

а первая - в переменную

2 команды это много? первая с head, вторая:

sed -i 1d <file>

anonymous
()
line=$(cat "$fdomain" | head -1)
cat "$fdomain" | tail -n +2 >"${fdomain}.new"
mv -f "${fdomain}.new" "$fdomain"

Либо с помощью sed -i, как анонимус выше говорит.

schizoid ★★★
()
Последнее исправление: schizoid (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.