I have code in bash for making latex file and in this fragment I want to make a table in a loop:
while IFS= read -r line; do
if [[ "$line" == *"comment"* ]]; then
echo "${line#*comment: }" >> tif_list.txt
IN="${line#*comment: }"
data="$(echo $IN | tr "," "\n")"
echo " ${data[0]}" >> table.tex #name
echo " & ${data[2]}" >> table.tex #longitude
echo " & ${data[3]}" >> table.tex #latitude
echo " & ${data[4]}, ${data[5]}, ${data[6]}, ${data[7]}, ${data[8]}, ${data[9]}, " >> table.tex #dimensions
echo " & ${data[10]}" >> table.tex #time
echo " & ${data[1]}" >> table.tex #comments
echo " & \includegraphics[width=3.5cm]{${tif%.*}.png}\\" >> table.tex #adress
echo " \hline" >> table.tex
echo "" >> table.tex
fi
done < tif_info.txt
done
but echo first prints variables, and then my additional text:
\hline
Target0001
The operator places target notes here. Multiple lines OK.
55:51.6217 N
020:34.4421 E
C1
L3.0
W0.8
H1-1.0
H2-1.0
D16.8
2021:11:13 08:29:02.37
&
&
& , , , , , ,
&
&
& \includegraphics[width=3.5cm]{Target0001.png}\
\hline
I want:
\hline
Target0001
& The operator places target notes here. Multiple lines OK.
& 55:51.6217 N
& 020:34.4421 E
& C1, L3.0, W0.8, H1-1.0, H2-1.0, D16.8
& 2021:11:13 08:29:02.37
& \includegraphics[width=3.5cm]{Target0001.png}\
\hline
I was trying to add /& or merge text by += but it doesn't change anything. I just need to make it work so I could have table with pictures and metadata from my tiff pictures.
My whole code:
#!/bin/bash
#program pobiera metadane tiff i zestawia w tabeli
echo "Starting..."
echo "\documentclass{article}" > table.tex
echo "\usepackage{graphicx, tabularx}" >> table.tex
echo "\usepackage[margin=0.5in]{geometry}" >> table.tex
echo "\graphicspath{ {./images/} }" >> table.tex
echo "" >> table.tex
echo "\renewcommand\tabularxcolumn[1]{m{#1}}" >> table.tex
echo "\newcolumntype{b}{X}" >> table.tex
echo "\newcolumntype{s}{>{\hsize=.5\hsize}X}" >> table.tex
echo "" >> table.tex
echo "\begin{document}" >> table.tex
echo "" >> table.tex
echo "\begin{table}[htbp]" >> table.tex
echo " \centering" >> table.tex
echo " \begin{tabularx}{\textwidth} { " >> table.tex
echo " | >{\centering\arraybackslash}s " >> table.tex
echo " | >{\centering\arraybackslash}s " >> table.tex
echo " | >{\centering\arraybackslash}s " >> table.tex
echo " | >{\centering\arraybackslash}s " >> table.tex
echo " | >{\centering\arraybackslash}s " >> table.tex
echo " | >{\centering\arraybackslash}b " >> table.tex
echo " | >{\centering\arraybackslash}b | }" >> table.tex
echo " \hline" >> table.tex
echo " name & longitude & latitude & dimensions & time & comments & picture \" >> table.tex
echo " \hline" >> table.tex
echo "Serching comment..."
for tif in *.tif; do
[ -f "$tif" ] || break
identify -verbose "$tif" > tif_info.txt 2>&1
#convert "$tif" "${tif%.*}.png" 2>&1
while IFS= read -r line; do
if [[ "$line" == "comment" ]]; then
echo "${line#*comment: }" >> tif_list.txt
IN="${line#*comment: }"
data="$(echo $IN | tr "," "\n")"
echo " ${data[0]}" >> table.tex #name
echo " & ${data[2]}" >> table.tex #longitude
echo " & ${data[3]}" >> table.tex #latitude
echo " & ${data[4]}, ${data[5]}, ${data[6]}, ${data[7]}, ${data[8]}, ${data[9]}, " >> table.tex #dimensions
echo " & ${data[10]}" >> table.tex #time
echo " & ${data[1]}" >> table.tex #comments
echo " & \includegraphics[width=3.5cm]{${tif%.*}.png}\\" >> table.tex #adress
echo " \hline" >> table.tex
echo "" >> table.tex
fi
done < tif_info.txt
done
echo " \hline" >> table.tex
echo " \end{tabularx}" >> table.tex
echo "\end{table}" >> table.tex
echo "" >> table.tex
echo "\end{document}" >> table.tex
echo "" >> table.tex
echo "Process completed."
$dataas if it is an array, but it's not. Also, please add expected output. You should also preferprintfoverecho, but for text processing, you might want to useawkand notbashin the first place. – pLumo Feb 14 '22 at 21:46,to\n, it's still a string. – pLumo Feb 14 '22 at 21:58