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


Считаете, что Ubuntu недостаточно дружелюбна к новичкам?
Помогите создать новое Руководство для новичков!

Автор Тема: Работа echo в цикле  (Прочитано 672 раз)

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

Оффлайн qwelip

  • Автор темы
  • Новичок
  • *
  • Сообщений: 2
    • Просмотр профиля
Работа echo в цикле
« : 24 Октября 2014, 09:20:23 »
Я новичек, поэтому вопрос скорее всего будет глупым.
Искал, но не нашел ответа, вот цикл
#!/bin/bash
...
{
for a in $(cat $file)
do
echo ${a:2}
done
} > home/file1
в переменную а вставляется строка из file, нужно чтобы echo выводило не просто результат вставки строки, а форматировало эту строку, допустим печатало с 3 символа - {a:2}, но вопрос в том, что когда выполняешь скрипт, вываливается ошибка script1: Bad substitution. И дело как раз в конструкции ${a:2}. Подскажите, как избежать ошибки.

Оффлайн SvMidi

  • Активист
  • *
  • Сообщений: 815
    • Просмотр профиля
Re: Работа echo в цикле
« Ответ #1 : 24 Октября 2014, 09:54:49 »
Пример файла не помешал бы

Пользователь решил продолжить мысль [time]24 Октябрь 2014, 09:58:39[/time]:
а так
Код: (bash) [Выделить]
#!/usr/bin/env bash
cat file.txt | while read line
do
echo ${line:2}
done

Пользователь решил продолжить мысль 24 Октября 2014, 10:02:41:
смотрю у вас там ещё это куда то записывается...
Код: (bash) [Выделить]
#!/usr/bin/env bash
{
cat file.txt | while read line
do
echo ${line:2}
done
} > /home/file1
« Последнее редактирование: 24 Октября 2014, 10:02:41 от SvMidi »
Я знаю только то, что ничего не знаю, остальные не знают и этого.

Оффлайн qwelip

  • Автор темы
  • Новичок
  • *
  • Сообщений: 2
    • Просмотр профиля
Re: Работа echo в цикле
« Ответ #2 : 24 Октября 2014, 10:10:35 »
Та же ошибка, убираешь все и оставляешь $line работает, в варианте ${line:2} ошибка

Оффлайн SvMidi

  • Активист
  • *
  • Сообщений: 815
    • Просмотр профиля
Re: Работа echo в цикле
« Ответ #3 : 24 Октября 2014, 10:26:59 »
УМВР. Какая версия bash? Может у Вас не linux?

Пользователь решил продолжить мысль [time]24 Октябрь 2014, 10:27:36[/time]:

И да, пример строки можно?

Пользователь решил продолжить мысль [time]24 Октябрь 2014, 10:33:17[/time]:

Или не bash, если делать это с sh, как раз вылазит Bad substitution

можно с sed
Код: (bash) [Выделить]
echo "$line" | sed -e 's/^.\{2\}//'Хотя если с sed, то и цикл не нужен.
Код: (bash) [Выделить]
#/usr/bin/env bash
sed -i $file -e 's/^.\{2\}//'
смотря что вам надо конечно в итоге.
« Последнее редактирование: 24 Октября 2014, 10:46:38 от SvMidi »
Я знаю только то, что ничего не знаю, остальные не знают и этого.

 

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