Я пытаюсь создать скрипт, который принимает два параметра, первый из которых является числом, а второй представляет собой список строк/файлов.Shell script отображает текст между двумя строками
listfile 3 test.txt test1.txt test2.txt
В основном то, что я пытаюсь сделать, это поместить имена файлов под 2 строки <h>
и </h>
. Как это:
<h>
test.txt
test1.txt
test2.txt
</h>
Количество вещей, которые могут пойти в том, что определяется первым аргументом, который для приведенного выше примера является 3.
Другим примером может быть, если я бегу что-то вроде:
listfile 1 test.txt test1.txt test2.txt
В этом случае каждый <h></h>
может содержать 1 файл. так что результат будет выглядеть примерно так:
<h>
test.txt
</h>
<h>
test1.txt
</h>
<h>
test2.txt
</h>
Вот моя попытка:
#!/bin/sh
value=0
arg1=$1
shift
for i in "[email protected]"
do
if [ $value -eq 0 ]; then
echo "<h>"
fi
if [ $value -lt $arg1 ]; then
echo "$i"
value=`expr $value + 1`
fi
if [ $value -ge $arg1 ]; then
echo "</h>"
value=`expr $value - $value`
fi
done
До сих пор я получил его на работу, но единственная проблема в том, что последний </h>
не кажется, чтобы выводимый и я не могу понять, как это исправить. Если я пытаюсь:
listfile 4 test.txt test1.txt test2.txt
он выводит, но это </h>
отсутствует:
<h>
test.txt
test1.txt
test2.txt
Если кто-нибудь может дать мне подсказку, что будет очень ценится.
'value = $ (expr $ value - $ value)' легче записать 'значение = 0'. Простым способом является тестирование в конце: если значение отличное от нуля, напечатайте завершающий '' –