Toon posts:

[Linux] Probleem met echo die newlines weg kapt

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik zit met het volgende probleem, als ik de onderstaande lijn invoer dan krijg ik het volgend:

yum check-update | grep -v "Server:" | grep -i "[0-9]86\|noarch"
kernel i686 2.4.22-1.2199.nptl Quicknet - updates-released
kernel-pcmcia-cs i386 1:3.1.31-16 Quicknet - updates-released
kernel-source i386 2.4.22-1.2199.nptl Quicknet - updates-released

Deze uitvoer is goed! Maar ik gebruik deze lijn in een script en zet de content in een variable. Wanneer ik lcount=`echo $VARIABLE | wc -l` doe dan krijg ik dus de verkeerde lcount waarde terug. Ik heb gezien dat dit komt door de "echo $VARIABLE", hij laat dus de newlines weg. Is er een andere manier om toch een goede wc -l te doen op die output?

Sorry ben een n00b op bash gebied, maar heb overal wel gezocht :(

  • deadinspace
  • Registratie: Juni 2001
  • Laatst online: 00:44

deadinspace

The what goes where now?

Bash ziet die newlines als argument-scheiding, en geeft dus alle woorden los aan echo door, wel van elkaar gescheiden, maar niet door newlines.

Je kunt de count direct in een variabele gooien:
code:
1
lcount=$(yum check-update | grep -v "Server:" | grep -i "[0-9]86\|noarch" | wc -l)

Of de output eerst in een temporary file gooien:
code:
1
2
yum check-update | grep -v "Server:" | grep -i "[0-9]86\|noarch" > /tmp/blaat
lcount=$(cat /tmp/blaat | wc -l)

Al wil je dan liever mktemp gebruiken om een fatsoenlijke temporary-file-naam te verkrijgen :)

$() is overigens ``, maar dan leesbaar.

Verwijderd

Topicstarter
Oke van deze oplossingen is de eerste het beste. Had gehoopt dat het ook met awk had gekund.