webForumDet fria alternativet

Hur räknar jag antalet tecken på en inparameter?

Linux & BSD

7 svar · 333 visningar · startad av nkrantz

Medlem sedan apr. 2002830 inlägg
Frågan#1

Börjar bli smått galen på detta, får det inte alls att funka. Har en komandofil som jag vill skicka med ett argument till. I filen vill jag räkna antalet tecken i det som kommer in. Kör Bourne shell.

Tycker det borde funka med

LENGTH=`$1 | wc -m`
echo $LENGTH

Men det vill den inte.

Hur göra?

// Nippe

Medlem sedan juni 20008 205 inlägg
#2

Vad är -m för flagga? Det borde väl ändå vara -c? Och så måste du ge $1 som indata till wc, annars går det ju inte att pipa. Således:

LENGTH=`echo -n "$1"|wc -c`

-n gör att echo inte ger nån avslutande newline, vilket skulle leda till att wc verkade ge ett tecken för mycket.

Medlem sedan apr. 2002830 inlägg
#3

Man har ju en del att lära när det gäller unix-programmering verkar det som. Tack spango!

Vad är -m för flagga?

-m Count characters

// Nippe

Medlem sedan apr. 2002830 inlägg
#4

Fast den koden jag fick av dig returnerar 7 när jag skickar in 123 Kan det stämma?

// Nippe

Medlem sedan juni 200010 432 inlägg
#5

Men nu tolkas $1 | wc -m som att $1 är ett kommando. Ifall du vill räkna tecken i $1 kan du peta in ett echo före. Dvs:
echo $1 | wc -m

R-> Såg att nu att spango redan föreslagit det. Ser oxå att nkratz ändå inte får det att fungera, vilket är märkligt. Kanske en 'fnutt' som hamnat fel?

Medlem sedan juni 20014 290 inlägg
#6

nkrantz skrev:

Fast den koden jag fick av dig returnerar 7 när jag skickar in 123 Kan det stämma?

Det är inte så att du kör på ett system som använder Unicode, då tar varje tecken upp 2 bytes, iofs så borde du då hamna på 6 istället för 7.

Medlem sedan juni 200010 432 inlägg
#7

Du skulle iofs även kunna testa:

LENGTH=$(echo  $1 | wc -m)
echo $LENGHT

Båda varianterna fungerar ivf för mig :)

Medlem sedan apr. 2002830 inlägg
#8

Tackar, jag löste det genom att dra bort 4 från LENGTH variabeln istället ;) Kanske inte så proffsigt, men det funkar ju, hehe

264 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
124 ms — deklarationer (db)
0 ms — hämta statistik (cache)
130 ms — hämta tråd, inlägg och bilagor (db)
129 ms — ändringar (db)