Ctrl4Dkn: ESP32 (Floor) Heat Controller With Daikin (Heatpump) Support - https://github.com/arnova/ctrl4dkn
[ Voor 23% gewijzigd door blaataaps op 31-01-2007 13:40 ]
Is het misschien mogelijk met zoiets als?:blaataaps schreef op woensdag 31 januari 2007 @ 13:37:
Niet, processen kunnen niet de environment van parents veranderen (gelukkig). Wat wel kan, is de aanroep, in plaats van gewoon aanroepen in een subshell, het script sourcen, als ik je constructie met "hoofdscript" goed begrijp, hoewel ik dan de pipe in de titel niet kan plaatsen.
1
2
3
4
| ... while ... done < &5 ... |
En zo ja hoe krijg ik dan de output (stdout) van 'df' in file descriptor &5?
Ctrl4Dkn: ESP32 (Floor) Heat Controller With Daikin (Heatpump) Support - https://github.com/arnova/ctrl4dkn
Je hebt mij verkeerd begrepen. Ik bedoel niet dat die variable vanuit mijn script naar mijn systeem geexporteerd zou moeten worden. Het gaat omdat while;done loopje wat via een pipe (|) zijn stdin gevoerd krijgt. Als ik in dat loopje MYVAR zet/veranderen dan gaat die waarde verloren zodra ik die while-loop weer uit ben....blaataaps schreef op woensdag 31 januari 2007 @ 13:37:
Niet, processen kunnen niet de environment van parents veranderen (gelukkig). Wat wel kan, is de aanroep, in plaats van gewoon aanroepen in een subshell, het script sourcen, als ik je constructie met "hoofdscript" goed begrijp, hoewel ik dan de pipe in de titel niet kan plaatsen.
Ctrl4Dkn: ESP32 (Floor) Heat Controller With Daikin (Heatpump) Support - https://github.com/arnova/ctrl4dkn
Verwijderd
1
2
3
4
5
6
7
| FIFO=/tmp/.jouwproces_unique_identifier mkfifo $FIFO df > $FIFO & while ... < $FIFO ... done ... |
Zoiets?
Volgens mij moet je eerste MYVAR=no ook een export zijn.[b][message=27416272,noline]master_artech schreef op woensdag 31 januari 2007 @ 13:23Nu krijg ik het dus met geen mogelijkheid voor elkaar om de waarde van $MYVAR die gezet wordt naar in dit geval "yes" te exporteren naar het hoofd script. Hoe krijg ik dat voor elkaar?
1
2
3
| #!/bin/sh export MYVAR=no # makes the variable global to the script |
Suc6
1
2
3
4
5
6
| a=`df`
IFS=$'\n'
for line in $a; do
echo $line
# Iets anders
done |
Verwijderd
De variabele MYVAR word in dit scriptje wel meegenomen naar de laatste echo. Als je het copy/paste en uitvoert, zie je het resultaat van df op je scherm, en daarna een "no".
Vertel eens wat je scriptje moet doen. Misschien dat het dan wat makkelijker word om te helpen.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
| IFS=$'\n'
for LINE in `df -h -P -l`; do
echo -n "$LINE"
if [ ! -z "$(echo "$LINE" |grep -v "Use%")" ]; then
free_perc=`echo "$LINE" |awk '{ print $5 }' |sed s,'%',,`
if [ $free_perc -gt 95 ]; then
echo ' (At or near max. capacity!)'
DF_WARNING=1
fi
fi
echo ""
done
if [ "$DF_WARNING" = "1" ]; then
echo ""
echo "** WARNING: One or more filesystems are at or near maximum capacity! **"
fi |
Het is dus een check om te kijken of je filesystemen niet bijna out-of-disk-space zijn. Het vervelende is alleen dat die "for LINE in `df -h -P -l`; do" icm IFS=$'\n' (die ik zelf ook al had), niet goed werkt wanneer je een POSIX compliant shell zoals dash (standaard in Debian gebruikt). Bovendien vind ik het gebruik van een pipe zelf fraaier. Vandaar dus dat ik had bedacht om er van te maken "df -h |while read LINE" etc... Maar dan krijg je dus die DF_WARNING-waarde er niet "uit"....
[ Voor 3% gewijzigd door arnova op 03-02-2007 16:20 ]
Ctrl4Dkn: ESP32 (Floor) Heat Controller With Daikin (Heatpump) Support - https://github.com/arnova/ctrl4dkn
Yep, that's it :-D (Sorry, eerder overheen gelezen)Verwijderd schreef op donderdag 01 februari 2007 @ 14:03:
code:
1 2 3 4 5 6 7 FIFO=/tmp/.jouwproces_unique_identifier mkfifo $FIFO df > $FIFO & while ... < $FIFO ... done ...
Zoiets?
[ Voor 5% gewijzigd door arnova op 08-02-2007 22:33 ]
Ctrl4Dkn: ESP32 (Floor) Heat Controller With Daikin (Heatpump) Support - https://github.com/arnova/ctrl4dkn