Portál AbcLinuxu, 12. května 2025 04:49
pokoj="Kuchyn" pokoj="$pokoj "BTW proč je třeba aby měly všechny názvy stejnou délku?
pokud dám mezery tak se prostě vytratí..Jestli načítáte pomocí
read
nebo tak, tak mezery zlikviduje shell ještě před načtením. Vychází to z toho, že uživatel si může mezerami zarovnávat a že data jsou obvykle jiné znaky.
Lze toho vůbec docílit, nebo se snažím zbytečně?V proměnné samozřejmě mezery být mohou. Pokud např. budete načítat ze souboru a první řádek bude končit mezerami, tak
radek="`head -n 1 soubor`"; echo "$radek."vypíše řádek v pořádku i s mezerami jak byly v původním souboru. Pokud potřebujete zarovnávat výstup, zkuste
printf
(pokud ho máte), popř. doplnit mezery na danou šířku lze i sed
em nebo v AWKu.
pokoj="Kuchyň "funguje.
(mělo by tam být těch mezer více, ale po vložení dotazu se to zredukuje na jednu :( )Existuje HTML značka
<pre>
…
Zdravim, tak stacilo by do tej slucky zapisat nieco taketo:
printf -v pokoj "%-15s" "${pokoj}"
Vyssie uvedena cast prepise stavajucu hodnotu premennej pokoj na hodnotu $pokoj s adekvatnym poctom medzier, aby celkova dlzka hodnoty bola 15. Ak chces medzery pred, tak bez toho minuska pred 15. Rovnako je mozne dat namiesto 15 inu hodnotu aj ako premennu.
echo $pokojse mezery odstraní, protože bash takový příkaz přeloží na
echo Kuchyň ¶(znak ¶ označuje konec řádku, doplněn byl pro lepší čitelnost)
echo "$pokoj"Potom bash takový příkaz přeloží na
echo "Kuchyň "kde jsou mezery uzavřené v uvozovkách a tak bash ví, že nejde o oddělovač, a tak je neodstraní.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.