Как распечатать объединение строк в Korn Shell

Мне любопытно из вопроса решить проблему памяти с решением split, но независимо от этого, этот альтернативный подход может быть полезен:

Вы могли бы использовать csplit вместо split для разделения такого файла.

Для csplit нужно определить паттерн, определяющий, где разбивать, а в качестве разделителя можно использовать строки с одним номером - если вы знаете, что таких строк нет в комментариях.

Мне не понятно, в чем проблема с памятью, но использование другого инструмента может с этим справиться.

Но есть и преимущество в том, что команда становится проще, нет необходимости сначала получать число.

Команда будет что-то вроде:

csplit --elide-empty-files -n4 in.txt '/^[0-9]\+$/' '{*}'

1
26.08.2015, 22:07
1 ответ

у вас есть опечатка в строке 8 вашего скрипта, она должна быть: читать имя каталога {{1} } По этой причине вы выводите только «5», потому что $ dirname пусто.

Что происходит, когда вы читаете $ dirname , оболочка расширяет '$ dirname' до пустого значения.

Также к сведению, всегда используйте двойные кавычки при заключении переменных.

Исправленный сценарий:

#!/bin/ksh

echo Enter the level of nesting
read lev
echo Enter the directory \( Enter the Absolute Path\)
read path
echo Enter the directory name
read dirname
cd $path
for((i=1;i<=$lev;i++));
 do
  mkdir "$dirname$i"
  cd "$dirname$i"
 done
echo "$dirname$i"
2
27.01.2020, 23:36

Теги

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