Toon posts:

[Bash] while subshell voorkomen?

Pagina: 1
Acties:
  • 30 views sinds 30-01-2008

Verwijderd

Topicstarter
Hoe kan ik een subshell voorkomen in een while loop? hier is een voorbeeld code:
code:
1
2
3
4
5
6
7
8
9
#!/bin/bash

int=0
ps aux | while read user id rest
do
  int=$[ 1 + $int ]
  echo $int
done
echo "Klaar int is: $int"

Ik wil dus weten wat int was in de loop. Hoe kan ik dit checken?? of de subshell voorkomen?

  • Koppensneller
  • Registratie: April 2002
  • Laatst online: 08-02 02:20

Koppensneller

winterrrrrr

offtopic:
project 3 HAN?

[ Voor 26% gewijzigd door Koppensneller op 17-10-2005 14:38 ]


Verwijderd

Topicstarter
verder offtopic: Yep

  • richardt
  • Registratie: Mei 2002
  • Laatst online: 08-03-2025
Met deze while constructie verander je de variabelen van de subshell, die vervolgens niet worden teruggegeven aan de oorspronkelijke shell. Je kunt helaas niet voorkomen dat een while redirect een nieuwe subshell start (is trouwens nogal shell afhankelijk, bash start i.h.a niet zo makkelijk een subshell...).

Als workaround voor je probleem zou je wat je binnen probeert te lezen kunnen redirecten naar een file:
code:
1
2
3
4
5
6
7
ps > output
i=0
while read line
do
  let "i += 1"
done < output
echo "aantal regels: $i"


... of dit gewoon integraal in je redirect op te nemen, scheelt weer een file:
code:
1
2
3
4
while read line
do
  let "i += 1"
done < <(ps)

Verwijderd

Topicstarter
Kijk hier was ik naar opzoek!

Bedankt voor de snelle reactie

  • zomertje
  • Registratie: Januari 2000
  • Laatst online: 09-02 23:25

zomertje

Barisax knorretje

Huiswerkvragen horen hier niet thuis, je hoort je huiswerk zelf te maken en niet door een ander te laten doen :P

het ultieme jaargetijde.... | #!/usr/bin/girl | Art prints and fun

Pagina: 1

Dit topic is gesloten.