
Ich möchte eine Liste wie diese anzeigen:
| A | B |
Item #1 | 291+4 | 56145+3 |
Item #2 | 7391+92 | 105+6067 |
aber es sieht so aus:
| A | B |
Item #1 | 291+4 | 56145+3 |
Item #2 | 7391+92 | 105+6067 |
mit
listing variables example values
item_1_a="291"
item_1_a_diff="4"
item_1_b="56145"
item_1_b_diff="3"
item_2_a="7391"
item_2_a_diff="92"
item_2_b="105"
item_2_b_diff="6067"
for i in "${array[@]}"
do
normally acquiring items values occurs here
...
item_a="$item_1_a+$item_1_a_diff"
item_b="$item_2_a+$item_2_a_diff"
prinft "Item \#%s | %-9s | %-9s |" $i $item_a $item_b`
done
Die Frage ist also, wie man zwei Variablen sauber in eine einzige Spalte bekommt.
Antwort1
Das Problem besteht darin, dass Sie jede Zeile mit Leerzeichen statt Tabulatoren formatiert haben, indem Sie die Zeile geändert haben:
prinft "Item \#%s | %-9s | %-9s |" $i $item_a $item_b`
Zu
prinft "Item \#%s | %-9s\t| %-9s\t|" $i $item_a $item_b`
die Spalten sollten ausgerichtet sein. Wenn die Variablen große Längenunterschiede aufweisen und die Spalten mit Tabulatoren immer noch nicht ausgerichtet werden, sollten Sie den Befehl verwendenSpalte.