Portál AbcLinuxu, 5. května 2025 13:18

Dotaz: Jak na přesný počet mezer v CL?

14.10.2012 17:01 Martin
Jak na přesný počet mezer v CL?
Přečteno: 203×
Odpovědět | Admin
Zdravím. Mám kód

#!/bin/bash
echo "Lorem ipsum dolor sit amet consectetuer";
ale pokud to potřebuji zobrazit takto
SPACES="                    "
echo "$SPACES Lorem ipsum dolor sit amet consectetuer";
jak můžu dostat do variable $SPACES přesný počet mezer?

muj nápad byl takový, ale nefunguje
NUM=20
SPACES=${for (( i=0; i<$NUM; i++ ));do echo -n " "; done}
Díky za pomoc
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

pepe_ avatar 14.10.2012 17:18 pepe_ | skóre: 48
Rozbalit Rozbalit vše Re: Jak na přesný počet mezer v CL?
Odpovědět | | Sbalit | Link | Blokovat | Admin

mně ano

 

NUM=20;SPACES=$(for (( i=0; i<$NUM; i++ ));do echo -n " "; done);echo "$SPACES  Lorem ipsum dolor sit amet consectetuer"

14.10.2012 17:29 Kit
Rozbalit Rozbalit vše Re: Jak na přesný počet mezer v CL?
Odpovědět | | Sbalit | Link | Blokovat | Admin
Pokud to jde bez proměnné SPACES, použil bych třeba tohle:
printf "%${NUM}s" ""
Moc elegantní to sice není, ale bylo to první, co mě napadlo.
14.10.2012 20:09 Ash | skóre: 53
Rozbalit Rozbalit vše Re: Jak na přesný počet mezer v CL?
Odpovědět | | Sbalit | Link | Blokovat | Admin
Ten váš příklad funguje, jen tam máte špatný typ závorek:
NUM=20
SPACES=$(for (( i=0; i<$NUM; i++ ));do echo -n " "; done)
Osobně bych místo cyklu použil printf
NUM=20
SPACES=$(printf "%${NUM}s" "")
nebo bych alespoň v cyklu nespouštěl echo ale jen bych přičítal mezeru
NUM=20
SPACES=""
for ((i=0; i<10; i++)); do SPACES+=" "; done

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.