цикличное выполнение через файл на 2 строках в оболочке

121 --- 175244-

Размер переменных Bash не фиксирован. Очень вероятно, удерживает произвольное количество данных, если malloc может найти достаточную память и непрерывный адрес. Большое большое количество данных в вашей переменной. Когда вы пытаетесь записать данные в свой файл, возможно, вы получите ошибку что-то вроде этого

/bin/echo ${LARGE_DATA} >> ${YourFile}    
/bin/echo: Argument list too long

Эта ошибка, связанная с максимальной длиной вашего аргумента вашего команда. Пожалуйста, проверьте ограничения по размеру аргументов и окружающей среды раздел, который указан в Page Page Man Page http://man7.org/linux/man-pages/man2/execve.2.html

»... Память, используемая для хранения Строки среды и аргумента были ограничены 32 страницами (определены Констанция ядра Max_Arg_Pages). На архитектурах с 4 КБ Размер страницы, это дает максимальный размер 128 КБ ... «

Отредактируйте:

Пожалуйста, обратите внимание, что вышеуказанная ошибка для / bin / echo - это просто пример, можно получить аналогичную ошибку, когда вы пробуете другие способы записи файла. ,

Предложение:

Если мы думаем, что писать в файловые операции атомным образом, каждый временной труб генерируется для написания, дескрипторы файлов открываются и закрыты. Это требует некоторого времени. Внимание использования / bin / echo или другие Можно написать свою собственную программу «writefile» с языком более высокого уровня, такими как C / C ++. Что нужно для перенаправления ввода / вывода.

  1. Открытый файл дескриптор
  2. Написание данных
  3. Закрыть дескриптор файла
  4. Оптимизировать свой код
  5. Сделано

    Пожалуйста, проверьте системные звонки, как SSIZE_T Написать (int FD, const void * buf, size_t count);

    http://linux.die.net/man/2/write

0
01.03.2015, 00:21
1 ответ

Чтобы собрать две строки, разделенные новой строкой в переменной...

while read line1 && read line2
do
    bothlines=$line1$'\n'$line2
    do_something_with "$bothlines"
done < test.fa

(работает с ksh, bash, zsh)

2
28.01.2020, 02:36

Теги

Похожие вопросы