ich ein Wort in X Räumen zentrieren möchten, damit ich diese Funktion schrieb:Bash-Skript kann nicht herausfinden, wie man verketten weißen Räumen
function center {
str=$1
M=$2
N=${#str}
if ((N >= M)); then
echo $str
exit
fi
P=$((M-N))
HP=$((P/2))
left=""
right=""
for i in [1..HP]; do :
left=" $left"
right=" $right"
done
if (((P-2*HP) == 1)); then
right=" "$right""
fi
echo "HP is $HP"
echo "Right is |"${right}"|"
echo "Left is |$left|"
echo "str is |$str|"
res=$right$str$left
echo "$res"
}
Problem Materie ist nicht das, was ich nicht richtig machen kann oder übrig, um mehr als einen Whitespace zu halten. Ich habe die Vorschläge zu anderen Antworten ausprobiert, aber ich kann nicht scheinen, dass sie funktionieren. Bitte helfen Sie.
'für i in [1..HP]' wird nicht funktionieren; Die Schleife wird nur einmal ausgeführt, wenn 'i' auf' [1..HP] 'gesetzt ist. Sie sollten stattdessen eine C-Style for-Schleife verwenden: 'for ((i = 0; i
Sie müssen die Variable angeben, um zu vermeiden, dass benachbarte Leerzeichen kombiniert werden. – Barmar
Danke Benjamin W. Nach Ihrer Korrektur funktionierte der Code. – aarelovich