1. Advent – Hol dir den Code

“Advent, Advent… Die Festtage stehen vor der Tür. Um euch die Wartezeit zu verkürzen und hektische Tage etwas aufzulockern, präsentieren wir nach jedem Adventssonntag ein Codebeispiel für die tägliche Computerpraxis. Wir wünschen euch eine schöne Adventszeit! Eure ICT-Blogger”

IFS und Serienbrief

Über die Bourne Again Shell, kurz Bash, kann man im Laufe seines Administratorlebens eine Menge lernen und erst recht wieder vergessen. Obwohl ich täglich damit arbeite, tun sich doch ab und zu wieder überraschend neue Erkenntnisse auf, oder manchmal auch Sachen, die ich längst vergessen habe.

Zu letzteren gehört der Internal Field Separator (IFS), mit dem man eine Datei, die kommagetrennte Werte enthält (CSV File), verarbeiten kann. Bisher hatte ich diese umständlich mit Special Variables aufgedröselt. Funktioniert auch super, aber wenn man den Code nach ein paar Wochen nochmal anfasst, kann man doch schon mal ins Grübeln kommen, was man da letztens verbrochen hat.

Beim Lesen von Shellskripten kann einem schon mal ein Fluch über die Lippen kommen.

Beim Lesen von Shellskripten kann einem schon mal ein Fluch über die Lippen kommen.

Ich hatte ein Textfile mit Benutzeraccounts (im Format Benutzer;Kennwort) und wollte den Usern eine E-Mail mit Ihren Accountdaten schicken. Setzt man die Variable IFS, sieht das Shellskript fast schon elegant aus:

#!/bin/bash

export IFS=";"

cat users.csv | while read username password
do
cat <<EOF |/usr/lib/sendmail -oi -t -odq
From: 
To: 
Subject: New Account for Your Mail Address

You need to change your initial password on the login portal:

Username: $username@example.ch
Password: $password

Cheers,
Postmaster
EOF
done