From 58a98bd5ea58d097b938a23bfd243857d4554e3e Mon Sep 17 00:00:00 2001 From: qbi Date: Mon, 3 May 2021 21:41:53 +0200 Subject: [PATCH 1/5] Das local-Builtin ist ein Bashismus. --- rechnung.sh | 36 ++++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/rechnung.sh b/rechnung.sh index b0c8d3f..dbd73a1 100755 --- a/rechnung.sh +++ b/rechnung.sh @@ -82,8 +82,8 @@ check_readable() { check_binaries() { - local program="" - local binaries=$* + program="" + binaries=$* for program in $binaries; do printf "\n[+] Suche nach Programm $program ..." @@ -99,7 +99,7 @@ check_binaries() { is_option() ( - local line="$*" + line="$*" if [ "${line#*=}" != "$line" ]; then return 0 @@ -131,7 +131,7 @@ print_ok() { print_warn() { - local msg=$* + msg=$* if [ "$COLORED_OUTPUT" -eq 1 ]; then echo -e "$YELLOW[-]$NORMAL $msg" @@ -187,8 +187,8 @@ reset_values() { set_value() { - local key=$(echo "$*" | $CUT_BIN -d "=" -f1) - local value=$(echo "$*" | $CUT_BIN -d "=" -f2) + key=$(echo "$*" | $CUT_BIN -d "=" -f1) + value=$(echo "$*" | $CUT_BIN -d "=" -f2) trim_key $key trim_value $value @@ -207,20 +207,20 @@ set_value() { make_invoice() { - local dead_days="14" + dead_days="14" if [ $(date +%u) -gt 5 ]; then dead_days="16" fi - local month_ascii=$(date '+%B') - local inv_day=$(date '+%j') - local inv_date=$(date '+%Y%m%d') - local inv_dead=$(date -d "+${dead_days}days" '+%d.\\\\,%m.\\\\,%Y') - local rechnungsnummer="$inv_date--$LFDNR" - local subject="Rechnung zu $SHORT" - local filename="$(date '+%Y%m%d')_Rechnung_$(echo "$month_ascii")_$(echo "$KUNDE" | $TR_BIN " " "_").ltx" - local buffer="$KUNDE; $ADRESSE" - local anschrift="$(echo "$buffer" | sed 's/; /\\\\\\\\\\\\\\ /g')" + month_ascii=$(date '+%B') + inv_day=$(date '+%j') + inv_date=$(date '+%Y%m%d') + inv_dead=$(date -d "+${dead_days}days" '+%d.\\\\,%m.\\\\,%Y') + rechnungsnummer="$inv_date--$LFDNR" + subject="Rechnung zu $SHORT" + filename="$(date '+%Y%m%d')_Rechnung_$(echo "$month_ascii")_$(echo "$KUNDE" | $TR_BIN " " "_").ltx" + buffer="$KUNDE; $ADRESSE" + anschrift="$(echo "$buffer" | sed 's/; /\\\\\\\\\\\\\\ /g')" echo "[+] Erstelle Rechnung: $filename" echo -n "s!#SUBJECT#!" >$SEDFILE; echo "$subject!" >>$SEDFILE @@ -247,8 +247,8 @@ make_invoice() { proced_ini_line() { - local line=$* - local first=$(echo "$line" | cut -c1-1) + line=$* + first=$(echo "$line" | cut -c1-1) # leerzeilen ignorieren if [ "$line" = "" ]; then From fc13201345896c984c03604820f58804bf48af03 Mon Sep 17 00:00:00 2001 From: qbi Date: Mon, 3 May 2021 21:49:13 +0200 Subject: [PATCH 2/5] Variablen gequotet --- rechnung.sh | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/rechnung.sh b/rechnung.sh index dbd73a1..bb3f4ac 100755 --- a/rechnung.sh +++ b/rechnung.sh @@ -24,7 +24,7 @@ RUBBER_BIN=$(which rubber 2>/dev/null || echo "rubber") EXECUTABLES_TO_CHECK="$BC_BIN $TR_BIN $SED_BIN $CUT_BIN $TPUT_BIN $DATE_BIN $PDFLATEX_BIN $RUBBER_BIN" GENPDF="" -if [ -x $RUBBER_BIN ]; then +if [ -x "$RUBBER_BIN" ]; then GENPDF="$RUBBER_BIN -d " else GENPDF="$PDFLATEX_BIN -halt-on-error " @@ -231,11 +231,11 @@ make_invoice() { echo -n "s!#POSITION#!" >>$SEDFILE; echo "$POSITION!" >>$SEDFILE echo -n "s!#BETRAG#!" >>$SEDFILE; echo "$BETRAG!" >>$SEDFILE echo -n "s!#DEADLINE#!" >>$SEDFILE; echo "$inv_dead!" >>$SEDFILE - cp $TEMPLATEFILE $filename - $SED_BIN -i -f $SEDFILE $filename - $GENPDF $filename - if [ -x $RUBBER_BIN ]; then - $RUBBER_BIN --clean $filename + cp "$TEMPLATEFILE" "$filename" + $SED_BIN -i -f "$SEDFILE" "$filename" + $GENPDF "$filename" + if [ -x "$RUBBER_BIN" ]; then + "$RUBBER_BIN" --clean "$filename" fi if [ $? -eq 0 ]; then @@ -276,7 +276,7 @@ proced_ini_line() { is_option $line if [ $? -eq 0 ] then - set_value $line + set_value "$line" else print_warn "Invalid syntax: $line" fi @@ -286,7 +286,7 @@ proced_ini_line() { quit() { printf "\n$BLUE" printf "[-] Exit$NORMAL\n" - exit $1 + exit 1 } @@ -297,7 +297,7 @@ echo "= Rechnung v$PROGRAMM_VERSION =" echo "===================" # Verschiedene Basic Checks -if [ -n $NUMBER_OF_COLORS ] && [ "$NUMBER_OF_COLORS" -ge 8 ]; then +if [ -n "$NUMBER_OF_COLORS" ] && [ "$NUMBER_OF_COLORS" -ge 8 ]; then COLORED_OUTPUT=1 fi @@ -305,16 +305,16 @@ if [ $(id -u) -eq 0 ]; then echo "$0: Das Skript darf nicht als Root ausgeführt werden." exit 1 fi -check_binaries $EXECUTABLES_TO_CHECK -check_readable $RECHNUNGSFILE -check_readable $TEMPLATEFILE +check_binaries "$EXECUTABLES_TO_CHECK" +check_readable "$RECHNUNGSFILE" +check_readable "$TEMPLATEFILE" printf "\n" # Kundendatei einlesen und rechnungen erstellen while IFS= read -r rawline do - trim_line $rawline - proced_ini_line $LINE_BUFFER -done <$RECHNUNGSFILE + trim_line "$rawline" + proced_ini_line "$LINE_BUFFER" +done < "$RECHNUNGSFILE" From c065d125daae826cd770622fd3f875751e2ab3c7 Mon Sep 17 00:00:00 2001 From: qbi Date: Mon, 3 May 2021 21:51:45 +0200 Subject: [PATCH 3/5] Weitere Vars gequotet --- rechnung.sh | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/rechnung.sh b/rechnung.sh index bb3f4ac..29e5972 100755 --- a/rechnung.sh +++ b/rechnung.sh @@ -146,7 +146,7 @@ print_warn() { trim_line() { set -f - set -- $* + set -- "$*" LINE_BUFFER=$(printf '%s' "$*") set +f } @@ -154,7 +154,7 @@ trim_line() { trim_key() { set -f - set -- $* + set -- "$*" KEY_BUFFER=$(printf '%s' "$*") set +f } @@ -162,7 +162,7 @@ trim_key() { trim_value() { set -f - set -- $* + set -- "$*" VALUE_BUFFER=$(printf '%s' "$*") set +f } @@ -190,8 +190,8 @@ set_value() { key=$(echo "$*" | $CUT_BIN -d "=" -f1) value=$(echo "$*" | $CUT_BIN -d "=" -f2) - trim_key $key - trim_value $value + trim_key "$key" + trim_value "$value" case $KEY_BUFFER in kunde) KUNDE="$VALUE_BUFFER";; adresse) ADRESSE="$VALUE_BUFFER";; @@ -273,7 +273,7 @@ proced_ini_line() { # alle anderen zeilen else - is_option $line + is_option "$line" if [ $? -eq 0 ] then set_value "$line" @@ -301,7 +301,7 @@ if [ -n "$NUMBER_OF_COLORS" ] && [ "$NUMBER_OF_COLORS" -ge 8 ]; then COLORED_OUTPUT=1 fi -if [ $(id -u) -eq 0 ]; then +if [ "$(id -u)" -eq 0 ]; then echo "$0: Das Skript darf nicht als Root ausgeführt werden." exit 1 fi From 710a452577b9ae0a4f04bd95e129f956b3a32c51 Mon Sep 17 00:00:00 2001 From: qbi Date: Mon, 3 May 2021 22:43:20 +0200 Subject: [PATCH 4/5] Einige printfs und echos umgebaut --- rechnung.sh | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/rechnung.sh b/rechnung.sh index 29e5972..6a7df91 100755 --- a/rechnung.sh +++ b/rechnung.sh @@ -70,7 +70,7 @@ NORMAL="\\033[0;39m" check_readable() { - printf "\n[+] Datei \"$1\" ist lesbar ..." + printf "\n[+] Datei %s ist lesbar ..." "$1" if [ -f "$1" ] && [ -r "$1" ] then print_ok @@ -86,10 +86,10 @@ check_binaries() { binaries=$* for program in $binaries; do - printf "\n[+] Suche nach Programm $program ..." + printf "\n[+] Suche nach Programm %s ..." "$program" if [ ! -x "$program" ]; then print_failed - printf "\n[-] Das Programm \"$program\" wird benötigt, aber nicht gefunden." + printf "\n[-] Das Programm \"%s\" wird benötigt, aber nicht gefunden." "$program" quit 3 else print_ok @@ -114,7 +114,7 @@ is_option() ( print_failed() { if [ "$COLORED_OUTPUT" -eq 1 ]; then - printf "$RED Failed$NORMAL" + printf "%s Failed%s" "$RED" "$NORMAL" else printf " Failed" fi @@ -123,7 +123,7 @@ print_failed() { print_ok() { if [ "$COLORED_OUTPUT" -eq 1 ]; then - printf "$GREEN OK$NORMAL" + printf "%s OK%s" "$GREEN" "$NORMAL" else printf " OK" fi @@ -134,9 +134,9 @@ print_warn() { msg=$* if [ "$COLORED_OUTPUT" -eq 1 ]; then - echo -e "$YELLOW[-]$NORMAL $msg" + echo "$YELLOW[-]$NORMAL $msg" else - echo -e "[-] $msg" + echo "[-] $msg" fi } @@ -170,7 +170,7 @@ trim_value() { reset_values() { - echo -e "\n[+] Initialisiere Felder für Rechnung neu." + printf "\n[+] Initialisiere Felder für Rechnung neu." LINE_BUFFER="" KEY_BUFFER="" VALUE_BUFFER="" @@ -208,7 +208,7 @@ set_value() { make_invoice() { dead_days="14" - if [ $(date +%u) -gt 5 ]; then + if [ "$(date +%u)" -gt 5 ]; then dead_days="16" fi @@ -284,8 +284,9 @@ proced_ini_line() { } quit() { - printf "\n$BLUE" - printf "[-] Exit$NORMAL\n" + printf "\n" + print "$BLUE" + printf "[-] Exit%s\n" "$NORMAL" exit 1 } From 16d27ace1b4c92e146e82a5f719f48dcce58c03e Mon Sep 17 00:00:00 2001 From: qbi Date: Mon, 3 May 2021 22:44:03 +0200 Subject: [PATCH 5/5] tput statt Color codes --- rechnung.sh | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/rechnung.sh b/rechnung.sh index 6a7df91..1d2fc7d 100755 --- a/rechnung.sh +++ b/rechnung.sh @@ -58,11 +58,11 @@ LFDNR="" NUMBER_OF_COLORS=$($TPUT_BIN colors) COLORED_OUTPUT=0 -RED="\\033[1;31m" -GREEN="\\033[1;32m" -YELLOW="\\033[1;33m" -BLUE="\\033[1;34m" -NORMAL="\\033[0;39m" +RED="$(tput bold)$(tput setaf 1)" +GREEN="$(tput bold)$(tput setaf 2)" +YELLOW="$(tput bold)$(tput setaf 3)" +BLUE="$(tput bold)$(tput setaf 4)" +NORMAL="$(tput bold)$(tput sgr0)" # Diverse Checks