watislos
Goto Top

Bash Parameter "timestamp"

Morgen Zusammen,

ich bin kein Bash kenner deswegen eine Frage an euch.

In einem Skript sollte immer am Ende ein aktueller timestamp ausgegeben werden.
Leider musste ich festellen das dies nur einmal passiert nämlich wenn man die Datei erstmalig ausführt, danach wird zwar der timestamp auch ausgeführt aber immer mit veralteten Datum und Uhrzeit.

Habe ich hier was übersehen, oder ist der Code falsch?

timestamp=$(date +%d-%m-%Y_%H-%M-%S)

printf "$timestamp"  


Danke

Content-Key: 4063911279

Url: https://administrator.de/contentid/4063911279

Ausgedruckt am: 20.04.2024 um 10:04 Uhr

Mitglied: NordicMike
NordicMike 26.09.2022 um 10:32:27 Uhr
Goto Top
Hast du beide Zeilen im Script untereinander? Rufst du auf mit
bash -c "meinscript"  

?
Mitglied: PeterPanter
PeterPanter 26.09.2022 um 10:37:59 Uhr
Goto Top
Moin, Zeile1 setzt die Variable $timestamp mit aktuellem Datum, Zeile3 gibt den Inhalt der Variable aus. Wenn du Zeile3 später erneut ausführst, ohne die Variable zu ändern, bleibt die Variable auf der "alten" Uhrzeit...

Daher NordicMikes Frage berechtigt: Wie wird was wann aufgerufen?

/pp
Mitglied: watIsLos
watIsLos 26.09.2022 aktualisiert um 10:51:56 Uhr
Goto Top
Ich schicke euch mal den Code, ich denke das ist dann einfacher.

Das ist aber wie Peter beschrieben hat.
Ich weiß nur nicht wo ich dann die Änderung vornehmen muss, oder was als Paramter abgeändert werden muss?!

#!/bin/sh

HOT_FOLDER="$1"  # Folder to watch  
SAFE_FOLDER="$2" # Folder for the safe file  
OCR="$3"         # OCR language (or empty for no OCR)  

timestamp=$(date +%d-%m-%Y_%H-%M-%S)



if [ -z "${HOT_FOLDER}" ]; then  
    echo "Please specify which folder to check as first parameter."  
    exit
fi

if [ -z "${SAFE_FOLDER}" ]; then  
    echo "Please specify which folder to write the results to as second parameter."  
    exit
fi

if [ -z "${OCR}" ]; then  
    echo "No OCR-language specified, will not perform OCR. (Specify a string like 'deu' as third parameter for OCR.)"  
fi

printf "\nThis programm will check the folder '%s' for files to convert with cli. Results will be written to '%s', the original files will be deleted after conversion. Press Ctrl+C to cancel.\n\n" "${HOT_FOLDER}" "${SAFE_FOLDER}"  

inotifywait --monitor "${HOT_FOLDER}" \  
            --event moved_to \
            --event create \
            --format '%f' |  
    while read -r file; do
        input="${HOT_FOLDER}/${file}"  
        output="${SAFE_FOLDER}/${file}-safe.pdf"  

        if [ -z "${file}" ]; then  
            echo "ERROR: Received empty string."  
        elif [ ! -r "${input}" ]; then  
            echo "ERROR: File '${input}' is not readable."  
        elif [ -e "${output}" ]; then  
            echo "File '${file}' already converted ('${output}' exists)."  
        else
            if [ -z "${OCR}" ]; then  
                appzone-cli --output-filename "${output}" "${input}"  
            else
                appzone-cli --output-filename "${output}" --ocr-lang "$OCR" "${input}"  
            fi
            rm "${input}"  
        fi
printf "\n ###### $timestamp ######\n\n"  


        printf '\nWaiting for files to convert (press Ctrl+C to cancel) ...\n\n'  
    done
Mitglied: PeterPanter
Lösung PeterPanter 26.09.2022 aktualisiert um 11:20:02 Uhr
Goto Top
Hi, du ermittelst die aktuelle Uhrzeit am Anfang des Scripts (Zeile 7) und benutzt diese "gespeicherte" Zeit am Ende (Zeile 49). Welche Zeit hättest du denn gerne, Anfang oder Ende?

Wenn du bei jedem Schleifen-Durchlauf die aktuelle Zeitangabe haben willst, pack das
timestamp=$(date +%d-%m-%Y_%H-%M-%S)
direkt vor das
printf "\n ###### $timestamp ######\n\n"  
Mitglied: watIsLos
watIsLos 26.09.2022 um 11:14:52 Uhr
Goto Top
Ich hätte gerne immer die Aktuelle Zeit!
Mitglied: NordicMike
NordicMike 26.09.2022 um 11:18:44 Uhr
Goto Top
Ich denke das inotifywait macht da irgendwas. Behält er das Script im Speicher und beendet es nicht richtig?

Teste mal ohne dem inotifywait. Gehts dann?