О, я вижу. Это то, что сбивает с толку новых пользователей, и вы не могли знать, - вопрос, который вы связаны с Первые несколько месяцев жизни сайта, когда мы еще не определили точные сроки и наши возможности. После того, как вопрос был опубликован, мы поняли, что у нас нет квалификации, чтобы ответить, связанным с охраной здоровья, и если мы позволим вопросы об их открыть, они вам ответили, но никто не может сказать, если ответы правильные, так что сейчас для нас тема. Затем мы должны определить, где грань между безопасностью пищевых продуктов (которые мы можем ответить) и здоровье. Я использую отдельные доски, рубили мясо в прошлом, и спрей доску и нож с анти-бак спрей перед стиркой их как обычно в горячей мыльной воде. Если я буду очень руки с мясом, втирая маринад сказать, я надеваю резиновые перчатки.

Вероятно, не хорошая идея, чтобы хранить большие данные в переменную, для мобильности и обеспечения надежности. А нена awk решение, которое тоже POSIX, поэтому, чтобы быть более вероятно, портативный, использовать СЭД.

Объяснение

Для больших объемов данных, хранить в переменной. Хотя колотить себя не ограничивать, но ОС может сделать это

Предположим, вы говорите: "это работает на моей ОС". Но,

  • Разные ОС имеют разные пределы
  • так что если вы хотите увеличить мобильность, зачем рисковать ваш скрипт работает на одной ОС, но и сбой на другой только потому, что они имеют разные лимиты ?
  • чтобы избежать этой проблемы, не храните в переменной в первую очередь

Итак, мы сохраняем его в файл. В частности, разбить строку на один символ (или как наименьшая единица вам желаю), на отдельных строках.

Затем с помощью СЭД:

Кроме того, подумайте о обслуживания код преимущества использования файла. Обновление строк хранится в файле может быть легче, чем навигация по коду в скрипте.

Пример

Есть данные, один персонаж (или как там наименьшая единица нужно "пошагово") на линию, например в файле данных.ЛСТ:

а
б
с
д
е

Ваш script.sh содержать:

#!/бин/Баш

stop_number="$1"

СЕПГ -Н "1,${stop_number}Р" сведения.ЛСТ

Итак, вы проверяете это на командной строке и видим:

$ ./script.sh 3
а
б
с
  • он использует СЭД для печати линии 1 Через на номер, указанный на $stop_number. Мы выписывали $stop_number вместо $1 сразу, для ясности
  • $stop_number конечно получается через позиционные параметр $1, который является произвольным числом входных хотел
  • поэтому он успешно вышел через 3 символа данных.ЛСТ, в последовательности отображается в данных.ЛСТ
  • на данный момент при вводе числа больше, чем фактическое число строк, он будет просто показать все линии.
  • в настоящее время данные.ЛСТ находится в том же каталоге, script.sh но если вы не хотите, что, если вы на самом деле его где-то еще, такие как ~/некоторые/реж/данных.ЛСТ тогда вы просто обязаны настроить его, чтобы сказать ~/некоторые/реж/данных.ЛСТ

Так что если у вас есть фактические данные в данных.ЛСТ вы можете протестировать этот скрипт себе.