Печатать строку несколько раз [закрыто]

У меня есть переменная 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?

0
задан 17 June 2015 в 13:03

3 ответа

Можно использовать это:

$ 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].
1
ответ дан 4 October 2019 в 03:13
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].

1
ответ дан 4 October 2019 в 03:13

Если я понимаю Ваш вопрос правильно, Вы ищете что-то как:

$ printf 'sTrapValue[%s],' $(seq 0 $numvar) | sed 's/,$/.\n/'
sTrapValue[0],sTrapValue[1],sTrapValue[2],sTrapValue[3],sTrapValue[4],sTrapValue[5].
1
ответ дан 4 October 2019 в 03:13

Другие вопросы по тегам:

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