echo mesmo string 85 vezes com alguns números ascendentes dentro dele

0

Eu tenho que criar um arquivo enorme de 85 entradas no seguinte formato:

user_dept1=$( while read -r x && read -r y <&3; do   echo " model: $model_1  user: $x department: $y License_Used: $p_out1"; done < /home/user_files/out1.txt 3</home/dept_files/dep1.txt | ts '%Y-%m-%d %H:%M:%S')

user_dept2=$( while read -r x && read -r y <&3; do   echo " model: $model_2  user: $x department: $y License_Used: $p_out2"; done < /home/user_files/out2.txt 3</home/dept_files/dep2.txt | ts '%Y-%m-%d %H:%M:%S')

e assim por diante até user_dept85

user_dept85=$( while read -r x && read -r y <&3; do   echo " model: $model_85  user: $x department: $y License_Used: $p_out85"; done < /home/user_files/out85.txt 3</home/dept_files/dep85.txt | ts '%Y-%m-%d %H:%M:%S')

Assim, as strings abaixo serão renomeadas a cada vez de 1-85:

user_dep1 - user_dept85
$model_1 -  $model_85
$p_out1  - $p_out85
out1.txt - out85.txt
dep1.txt - dep85.txt
    
por Kunal Saha 24.08.2016 / 19:09

2 respostas

1

Você só quer gerar 85 linhas de código?

for a in {1..85}
do
  echo "user_dept$a=\$( while read -r x && read -r y <&3; do   echo \" model: \$model_$a  user: \$x department: \$y License_Used: \$p_out$a\"; done < /home/user_files/out$a.txt 3</home/dept_files/dep$a.txt | ts '%Y-%m-%d %H:%M:%S')"
done > resulting_code

O truque é garantir que as citações sejam observadas. Portanto, os caracteres $ e " "precisam ser citados como \$ e \"

As primeiras 3 linhas da saída resultante:

user_dept1=$( while read -r x && read -r y <&3; do   echo " model: $model_1  user: $x department: $y License_Used: $p_out1"; done < /home/user_files/out1.txt 3</home/dept_files/dep1.txt | ts '%Y-%m-%d %H:%M:%S')
user_dept2=$( while read -r x && read -r y <&3; do   echo " model: $model_2  user: $x department: $y License_Used: $p_out2"; done < /home/user_files/out2.txt 3</home/dept_files/dep2.txt | ts '%Y-%m-%d %H:%M:%S')
user_dept3=$( while read -r x && read -r y <&3; do   echo " model: $model_3  user: $x department: $y License_Used: $p_out3"; done < /home/user_files/out3.txt 3</home/dept_files/dep3.txt | ts '%Y-%m-%d %H:%M:%S')
    
por 24.08.2016 / 19:45
0

Não tenho certeza do que ts faz por você, mas se você puder usar matrizes bash em vez de variáveis numeradas por nome, isso deve fazer aproximadamente o que você deseja:

#!/bin/bash

for n in {1..85}
do
    x=$(</home/user_files/out${n}.txt)
    y=$(</home/dept_files/dep${n}.txt)
    user_dep[$n]=$(echo " model: \$model_${n}  user: $x department: $y License_Used: \$p_out${n}" | ts '%Y-%m-%d %H:%M:%S')
done

# and show results
for n in {1..85}
do
    echo user_dep${n} = ${user_dep[$n]}
done
    
por 24.08.2016 / 19:46