#!/bin/bash
#
# Speichere ein direkt im Shell-Skript enthaltenes Stück C-Code in einem File.
# Kompiliere diesen C-File und führe das entstehende Executable aus.
#
# Das Skript soll für diese beiden Files in deinem Home-Dir
# ein neues Unterverzeichnis namens cprog-XXXXXX sicher anlegen
# und dort arbeiten.
# Nach dem Ausführen des C-Programmes soll das Skript
# wieder im ursprünglichen Verzeichnis sein
# und das temporäre Verzeichnis weglöschen.

# -d ... Verzeichnis, nicht File
# -p ... Pfad, wo angelegt werden soll
# /tmp oder $HOME/.tmp ist eine schlechte Idee,
# weil auf unserem Linux-Server alle temporären Verzeichnisse
# so konfiguriert sind, dass das Ausführen von Files dort verboten ist
mydir="$(mktemp -d -p $HOME cprog-XXXXXX)"

cfile=hello.c
# basename liefert den Namen ohne .c
exefile=$(basename $cfile .c)

# beschränke das cd auf eine Subshell
(
cd "$mydir"

cat << EOF > $cfile 
#include <stdio.h>

int main(void) {
    printf("Hello, world!\n");

    return 0;
}
EOF

gcc -o $exefile $cfile

./$exefile
)

# -r ... rekursiv, d.h. Verzeichnis samt Inhalt
#rm -r "$mydir"
