У меня есть переменная numvar
, которая содержит число.
CODE
something that reads number stored in numvar and then creates the same number of sTrapValue[with a number here that incrementally increases with each print from 0 to numvar]
INPUT
echo $numvar 5
Я должен создать $ numvar
раз напечатанное sTrapValue [x]
, где x
- возрастающее число.
ВЫВОД
В другую переменную bl
echo $bl sTrapValue[0],sTrapValue[1],sTrapValue[2],sTrapValue[3],sTrapValue[4],sTrapValue[5].
Все они имеют запятую, только последний sTrapValue [] заканчивается на. (Полная остановка)
Любая команда для выполнения этого Grep / sed / awk?
Можно использовать это:
$ numvar=5
$ bl="$(seq 0 "$numvar" | while read i; do echo "sTrapValue[$i]"; done) \
bl="${bl//$'\n'/,}" && bl="$(sed 's/$/./' <<<"$bl")"
Это имеет три части:
seq 0 "$numvar" | while read i; do echo "sTrapValue[$i]"; done
генерирует разделенные выходные записи показа новой строки sTrapValue[0-5]
.
"${bl//$'\n'/,}"
преобразует все новые строки в запятые.
$(sed 's/$/./' <<<"$bl")
добавит a .
в конце.
Можно также использовать tr
и sed
отформатировать вывод:
bl="$(seq 0 "$numvar" | while read i; do echo "sTrapValue[$i]"; done | tr '\n' ',' | sed 's/,$/./')"
Тест:
$ echo "$bl"
sTrapValue[0],sTrapValue[1],sTrapValue[2],sTrapValue[3],sTrapValue[4],sTrapValue[5].
sTrapValue[0]='a';
sTrapValue[1]='b';
sTrapValue[2]='c';
numvar=2;
COUNTER=0;
BL="";
while [ ! $COUNTER -gt ${numvar} ]; do
BL=${BL}${sTrapValue[$COUNTER]},;
let COUNTER=COUNTER+1;
done;
BL=$(echo ${BL} | sed 's/,$/./');
echo $BL;
=> a, b, c.
РЕДАКТИРОВАНИЕ:
Ответьте на отредактированный вопрос:
numvar=2;
COUNTER=0;
BL="";
while [ ! $COUNTER -gt ${numvar} ]; do
BL=${BL}sTrapValue[${COUNTER}],;
let COUNTER=COUNTER+1;
done;
BL=$(echo ${BL} | sed 's/,$/./');
echo $BL;
=> sTrapValue[0], sTrapValue[1], sTrapValue[2].
Если я понимаю Ваш вопрос правильно, Вы ищете что-то как:
$ printf 'sTrapValue[%s],' $(seq 0 $numvar) | sed 's/,$/.\n/'
sTrapValue[0],sTrapValue[1],sTrapValue[2],sTrapValue[3],sTrapValue[4],sTrapValue[5].