Форум русскоязычного сообщества Ubuntu


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

Автор Тема: [HOWTO] Пишем bash скрипты  (Прочитано 245686 раз)

0 Пользователей и 2 Гостей просматривают эту тему.

Оффлайн aliftin

  • Старожил
  • *
  • Сообщений: 1398
    • Просмотр профиля
Re: [HOWTO] Пишем bash скрипты
« Ответ #120 : 12 Января 2011, 17:41:12 »
Ну так и пишите в скрипте, не используя "echo". Примерно так:
#!/bin/bash
IFS=$'\n'

for i in `cat /media/12gb/input.txt`
do
number1=`echo "$i" | awk '{print $1}'`
number2=`echo "$i" | awk '{print $2}'`

update `jos_vm_product_price` set `product_price` = $number2 where `product_id` in (SELECT `product_id` FROM `jos_vm_product` WHERE `product_sku` = $number1)

done
Если мы не можем до чего то дотянуться, мы виним в этом не свой рост, не отсутствие табуретки, а свою цель.

Оффлайн Andx

  • Участник
  • *
  • Сообщений: 160
  • Привет, Земляне!
    • Просмотр профиля
Re: [HOWTO] Пишем bash скрипты
« Ответ #121 : 13 Января 2011, 11:24:10 »
aliftin
попробовал, выдает ошибку:
./pricesql.sh: строка 9: ошибка синтаксиса около неожиданной лексемы `('
./pricesql.sh: строка 9: ` update `jos_vm_product_price` set `product_price` = $number2 where `product_id` in (SELECT `product_id` FROM `jos_vm_product` WHERE `product_sku` = $number1)'
Asus K73E (Core i3 2310M/8gb ram/500gb/Intel HD Graphics 3000/HD audio/WIFI & BT/Ubuntu 12.04 64bit)
Живём правильно только тогда, когда после нас остаются чистые вода, воздух и земля.

Оффлайн alexander.pronin

  • Старожил
  • *
  • Сообщений: 2539
    • Просмотр профиля
Re: [HOWTO] Пишем bash скрипты
« Ответ #122 : 13 Января 2011, 12:25:21 »
Сформируйте строку в переменной.
Разберитесь с кавычками.
Есть двойные кавычки, одинарные прямые и обратные.
И еще для ясности.
a="ls"
echo $a
Напечает ls
Если набрать $a,
то выведется вывод команды ls.
Почувствуйте разницу.

Оффлайн Polkan

  • Участник
  • *
  • Сообщений: 124
    • Просмотр профиля
Re: [HOWTO] Пишем bash скрипты
« Ответ #123 : 13 Января 2011, 16:50:43 »
alexander.pronin
aliftin

Спасибо!! Все работает, вот только я стормозил :-[ , надо было сразу всю конструкцию выложить, ато оно перестает работать при наличии SQL запроса почемуто:
echo "update `jos_vm_product_price` set `product_price` = $number1 where `product_id` in (SELECT `product_id` FROM `jos_vm_product` WHERE `product_sku` = $number2)"
Попробуй экранировать одинарные кавычки
echo "update \`jos_vm_product_price\` set \`product_price\` = $number1 where \`product_id\` in (SELECT \`product_id\` FROM \`jos_vm_product\` WHERE \`product_sku\` = $number2)"

Оффлайн ArcFi

  • Старожил
  • *
  • Сообщений: 15189
    • Просмотр профиля
    • aetera.net
Re: [HOWTO] Пишем bash скрипты
« Ответ #124 : 13 Января 2011, 17:18:10 »
awk '{print "Some text for",$1,"and some text for",$2}' file.txt

Оффлайн victor00000

  • Старожил
  • *
  • Сообщений: 15568
  • Глухонемой (Deaf)
    • Просмотр профиля
Re: [HOWTO] Пишем bash скрипты
« Ответ #125 : 13 Января 2011, 19:24:19 »
awk '{print "Some text for",$1,"and some text for",$2}' file.txt
+1 ))))
Wars ~.o

Оффлайн alexander.pronin

  • Старожил
  • *
  • Сообщений: 2539
    • Просмотр профиля
Re: [HOWTO] Пишем bash скрипты
« Ответ #126 : 14 Января 2011, 08:08:10 »
Класс.

Оффлайн Andx

  • Участник
  • *
  • Сообщений: 160
  • Привет, Земляне!
    • Просмотр профиля
Re: [HOWTO] Пишем bash скрипты
« Ответ #127 : 14 Января 2011, 15:45:35 »
Большое спасибо!  Весьма элегантно получилось ))
все работает как надо:
cat listskus.txt | awk '{print "update `jos_vm_product_price` set `product_price` =",$1,"where `product_id` in (SELECT `product_id` FROM `jos_vm_product` WHERE `product_sku` =",dq $2 dq");"}' dq='"' >sql.txtнадо бы изучить этот awk, весьма облегчит жизнь :)
« Последнее редактирование: 14 Января 2011, 15:50:22 от Andx »
Asus K73E (Core i3 2310M/8gb ram/500gb/Intel HD Graphics 3000/HD audio/WIFI & BT/Ubuntu 12.04 64bit)
Живём правильно только тогда, когда после нас остаются чистые вода, воздух и земля.

Оффлайн RazrFalcon

  • O_o
  • Старожил
  • *
  • Сообщений: 3129
  • Zombie Mod
    • Просмотр профиля
    • Я на GitHub
Re: [HOWTO] Пишем bash скрипты
« Ответ #128 : 05 Февраля 2011, 00:05:47 »
Кто так let пишет?!
for i in `seq 1 10`;  do let "c = i + 1"; echo $c; done
PS было адресовано  [DarkNet]Alpha, который чето удалил свое сообщение, еу может еще комуто пригодится  :P
« Последнее редактирование: 05 Февраля 2011, 00:07:26 от RazrFalcon »
Gentoo + KDE, Official Windows Hater
Хотите помочь нашей вики: https://help.ubuntu.ru/wiki/fixme

Оффлайн [DarkNet]Alpha

  • Активист
  • *
  • Сообщений: 987
  • Эмоциональный эльдар
    • Просмотр профиля
    • EBM-радио
Re: [HOWTO] Пишем bash скрипты
« Ответ #129 : 05 Февраля 2011, 00:07:53 »
Кривизна оказалась в руках, уже нашёл...

Оффлайн Romariano

  • Новичок
  • *
  • Сообщений: 6
    • Просмотр профиля
Re: [HOWTO] Пишем bash скрипты
« Ответ #130 : 21 Февраля 2011, 22:10:51 »
Ребят, а скажите пожалуйста, что делает команда bash -e? )

Оффлайн Чистый

  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 3473
  • nix - вот оно счастье...
    • Просмотр профиля
Re: [HOWTO] Пишем bash скрипты
« Ответ #131 : 21 Февраля 2011, 22:27:07 »
Ребят, а скажите пожалуйста, что делает команда bash -e? )


если ничего не путаю то
выйти если команда завершилась с ошибкой (вернула не 0)
Тестовый репозиторий kdeNeur ppa:devcode/kdeneur
各々が死ぬことをどのように決定する

Оффлайн talifero

  • Участник
  • *
  • Сообщений: 181
    • Просмотр профиля
Re: [HOWTO] Пишем bash скрипты
« Ответ #132 : 02 Марта 2011, 11:51:16 »
Привет всем!! Вот столкнулся с такой вещью...
Какими критериями руководствуется find при выводе списка найденных файлов?
Например в каталоге  есть файлы :
ls -l
-rw-r--r-- 1 talifero talifero 159142 2011-03-02 10:40 01aa.jpg
-rw-r--r-- 1 talifero talifero  59527 2011-03-02 10:40 02bb.jpg
-rw-r--r-- 1 talifero talifero 262704 2011-03-02 10:40 03cc.jpg
-rw-r--r-- 1 talifero talifero  87120 2011-03-02 10:40 04dd.jpg
-rw-r--r-- 1 talifero talifero  77020 2011-03-02 10:40 05ee.jpg
-rw-r--r-- 1 talifero talifero  88263 2011-03-02 10:40 06ii.jpg
-rw-r--r-- 1 talifero talifero  27336 2011-03-02 10:40 07kk.jpg
-rw-r--r-- 1 talifero talifero  49401 2011-03-02 10:40 08ll.jpg
А команда find выводит их в таком порядке:
find -name '*.jpg'
./08ll.jpg
./07kk.jpg
./02bb.jpg
./05ee.jpg
./06ii.jpg
./01aa.jpg
./04dd.jpg
./03cc.jpg
Т.е. имя файла явно по барабану, дата и размер тоже.
Я понимаю что можно использовать find -name '*.jpg' | sort, просто интересно. :)


Оффлайн alexander.pronin

  • Старожил
  • *
  • Сообщений: 2539
    • Просмотр профиля
Re: [HOWTO] Пишем bash скрипты
« Ответ #133 : 02 Марта 2011, 11:58:04 »
Руководствуется порядком нахождения в конкретной файловой системе. Поэтому как карта ляжет.

Оффлайн talifero

  • Участник
  • *
  • Сообщений: 181
    • Просмотр профиля
Re: [HOWTO] Пишем bash скрипты
« Ответ #134 : 02 Марта 2011, 12:34:22 »
И действительно. скопировал в определенном порядке, все в таком же порядке и нашлось . Не думал что оно так работает, буду знать. Спасибо!

 

Страница сгенерирована за 0.018 секунд. Запросов: 21.