I always wondered how I could easily read several variables at once from some program I execute from bash. Usually I simply read all values to a single variable and do a barrel roll (for each) on it or I execute the program in question several times with slightly tweaked parameters. That’s all not so nice for performance critical scripts. So I usually try to read as much as possible with as less as possible program calls from within a script.

Well, this is a snipped I developed today that is much easier by simply making use of read and “<<<

read iUID iGID <<< `awk -v username="$USERNAME" -F ":" '$0 ~ "^"username":x:" {print $3" "$4}' /etc/passwd`

I’m also passing a variable down to awk used in a regular expression. Please notice that this does only work when $IFS is a single space (default).

if [[ $iUID =~ ^[0-9]+$ ]] && [[ $iGID =~ ^[0-9]+$ ]]; then

And here I can even validate both values easily as integers using a regular expression.

Bash is so damn powerful once you get the basics 🙂 Ah and yes I am aware that awk can do the integer check itself but I’m just not there.. yet 😉

Ich mag meinen Job 🙂 Spielzeug fĂŒr Erwachsene:

============
Last updated: Thu Aug 25 16:03:54 2011
Stack: Heartbeat
Current DC: punk (71dd0b09-39d3-4869-9b07-ec7ca7328ea1) - partition with quorum
Version: 1.0.11-6e010d6b0d49a6b929d17c0114e9d2d934dc8e04
2 Nodes configured, unknown expected votes
3 Resources configured.
============Online: [ steam punk ]

Resource Group: grpNFS
fsDRBDnfs  (ocf::heartbeat:Filesystem):    Started steam
resIPnfs   (ocf::heartbeat:IPaddr2):       Started steam
Master/Slave Set: msDRBDnfs
Masters: [ steam ]
Slaves: [ punk ]
resNFS  (lsb:nfs-kernel-server):        Started steam

Ich habe die Tage mal wieder was am Wine zu knabbern gehabt. Nach dem Aktivieren der OnBord Soundkarte schien zunĂ€chst alles schön zu seine. Unter Ubuntu konnte ich einfach den Punkt “Auf alle verfĂŒgbaren Soundkarten ausgeben” auswĂ€hlen.

Unter Wine hatte ich aber plötzlich keinen Ton mehr.

“wine winecfg” hat einen Tab “Audio”. Da ging der Ton, wenn man auf “Test Sound” geklickt hat, lustigerweise.

Nun, des RĂ€stels Lösung: Wine nutzt, genau wie der Pulseaudio von Ubuntu, das Alsa Device. Nun hat Ubuntu mir aber die Alsa Config umgebogen und ein sog. “dmix” Device angelegt, um auf beide Soundkarten auszugeben. DMIX zu erklĂ€ren sprengt nun hier den Rahmen (wenn das interessiert=> alsa webseite erklĂ€rts). Auf jeden Fall war damit das Device “default” von alsa einfach leer. Das dmix Device hört hingegen auf den Namen “default_1”.

Unter “wine regedit” habe ich dann die Variable “DefaultPlayback” auf “default_1” gestellt. Nun gehts wieder

Die Keys sind unter http://wiki.winehq.org/UsefulRegistryKeys beschrieben.

Kann sein dass sich das bald wieder Àndert. Soweit ich das verstanden habe bekommt Wine gerade eine radikale Umstrukturierung bei Audio verpasst, was dann wohl eine direkte Anbindung (ohne Patch) an gstreamer erlaubt.

Klar, alternativ hÀtte ich einfach default in default_1 umlenken können oder eine der anderen 10 Möglichkeiten zur Soundausgabe Soundausgabe umzuleiten nutzen können. Ist aber letztendlich egal. Um mich genau mit sowas nicht mehr rumzuÀrgern habe ich mir damals eine SB Live 5.1 mit emu10k1 Chipsatz geholt. Die konnte Hardwaremixing und brauche garkeine Soundserver und Software-Mixing mehr. Irgendwie ironisch dass mich diese Probleme dann doch 2011 mit dem Aktivieren einer zusÀtzliuchen OnBord Karte wieder eingeholt haben.