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


Следите за новостями русскоязычного сообщества Ubuntu в Twitter-ленте @ubuntu_ru_loco

Автор Тема: Помогите с shell-scripting  (Прочитано 1126 раз)

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

Оффлайн nixoid

  • Автор темы
  • Любитель
  • *
  • Сообщений: 81
  • Бубунтовод
    • Просмотр профиля
Помогите с shell-scripting
« : 20 Сентября 2009, 15:52:20 »
Пишу собственный скриптик для конвертирования jpeg->djvu, собственно в скриптописании это мой первый опыт, поэтому читаю попутно Advanced Bash-Scripting Guide, наткнулся на такие грабли:
echo "Список аргументов в переменной \"\$*\":"
for arg in "$*"  # Работает некорректно, если "$*" не ограничена кавычками.
do
  echo "Аргумент #$index = $arg"
  let "index+=1"
done             # $* воспринимает все аргументы как одну строку.
echo "Полный список аргументов выглядит как одна строка."
так вот у меня шелл не находит команды let
./arglist.sh: 33: let: not found
но прямо из терминала let работает  :o
в чём тут загвоздка?!
« Последнее редактирование: 20 Сентября 2009, 16:13:24 от nixoid »

Оффлайн ArcFi

  • Старожил
  • *
  • Сообщений: 15189
    • Просмотр профиля
    • aetera.net
Re: Помогите с shell-scripting
« Ответ #1 : 20 Сентября 2009, 16:34:22 »
Пример:
for i in {1..5}; do echo $((index++)); done
Теперь ясно, что чем заменить надо?

Оффлайн nixoid

  • Автор темы
  • Любитель
  • *
  • Сообщений: 81
  • Бубунтовод
    • Просмотр профиля
Re: Помогите с shell-scripting
« Ответ #2 : 20 Сентября 2009, 16:54:08 »
Спасибо за ответ! Только вопрос немного о другом :) Непонятно, почему команда let работает при вводе из терминала а из скрипта "not found"?

Оффлайн ArcFi

  • Старожил
  • *
  • Сообщений: 15189
    • Просмотр профиля
    • aetera.net
Re: Помогите с shell-scripting
« Ответ #3 : 20 Сентября 2009, 17:26:15 »
Добавить вначале:
#!/bin/bashПо дефолту, видимо, юзается sh.

Оффлайн Nebulosa

  • Активист
  • *
  • Сообщений: 397
    • Просмотр профиля
Re: Помогите с shell-scripting
« Ответ #4 : 21 Сентября 2009, 07:40:21 »
Добавить вначале:
#!/bin/bashПо дефолту, видимо, юзается sh.
$ ls -la /bin/sh
lrwxrwxrwx 1 root root 4 Авг  1 18:22 /bin/sh -> bash
какбе..

Не понял вообще что в скрипте должно выполнятся. На let не ругается, но смысл действа неясен..

Оффлайн ArcFi

  • Старожил
  • *
  • Сообщений: 15189
    • Просмотр профиля
    • aetera.net
Re: Помогите с shell-scripting
« Ответ #5 : 21 Сентября 2009, 08:43:10 »
Гы :)
$ ls -la /bin/sh
lrwxrwxrwx 1 root root 4 2009-08-15 12:16 /bin/sh -> dash
Так что не факт.

Оффлайн alexander.pronin

  • Старожил
  • *
  • Сообщений: 2539
    • Просмотр профиля
Re: Помогите с shell-scripting
« Ответ #6 : 21 Сентября 2009, 09:01:52 »
Сдвигать аргументы на shift ом.
Пример из моего творчества.

#! /bin/sh
# тестер для выявления не латинских букв для позиционных обозначений
# запуск:
# ./testLat inFile1

while [ $# -ne 0 ]
do
   echo "----------------------------------------------------------------"
   echo "Тест на не латинские буквы файла `basename $1`"
#   cat $1 | grep -v "[A-Za-z0-9:]*"
   cat $1 | grep "[^A-Z0-9.:/-][^A-Z0-9.:/-]*"

   shift
done


Пользователь решил продолжить мысль 21 Сентября 2009, 09:16:05:
Это было очень давно и я не помню всех деталей, но смысл такой.
Этот скрипт часть набора скриптов для групповой проверки, обработки и преобразования (подгонки под требуемый формат) xml-файлов. Т.е. закгоняю в какую-то папку пачку xml-файлов, а на выходе имею логи работы и обработанную пачку  xml-файлов. Делал я их в сумасшедшем темпе, поэтому могут быть какие-то ошибки.
« Последнее редактирование: 21 Сентября 2009, 09:16:06 от alexander.pronin »

 

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