Portál AbcLinuxu, 12. května 2025 13:03
Ahoj, tak mam takovy zapeklity problemek.
Prijde mi-li mail, poslu ho rourou do skriptu, kterej vytahle prilohu, prejmenuje ji podle aktualniho data a casu a zkopci na web (apache2) - dale odesle informacni mail, ze priloha byla zverejnena. Chtel bych ale pridat jeste informaci: muzete si ji nyni prohlednout na www.example.net/priloha_datum_cas.pdf. Jak ale udelam, aby se mi ta aktualni promena napsala za www.example.net/ ? Diky, snad jsem to popsal srozumitelne.
Buď je to triviální
... # v proměnné 'soubor' je cesta k tomu souboru soubor=něco ... mail -s "Informacni mail" .... <<EOF_MAIL Priloha byla zverejnena, je k nalezeni na http://www.example.net/$soubor. EOF_MAIL
nebo jsem to nepochopil (pokud je to tenhle případ, vložte sem už hotovou část skriptu).
cast, kde soubor bude prejmenovan:
function print_new_name () {
# Input: file.pdf
# Output: file_090308_01.pdf
date=$(date +%d%m%y)
i=1
while :; do
printf -v name "%s_%s_%02d.pdf" "${1%.pdf}" $date $i
if [ ! -e "$name" ]; then break; fi
let i=i+1
done
echo "$name"
}
for f in /home/FAX/priloha.pdf; do
# skip names with suffixes like _090308_01.pdf
if [ "${f%_[0-9][0-9][0-9][0-9][0-9][0-9]_[0-9][0-9].pdf}" == "$f" ]; then
name=$(print_new_name "$f")
mv "$f" "$name"
fi
done
Jak z toho vytahnu ten nazev aby sel pouzit do toho info vypisu?
nazev=`echo "$name" | sed 's#.*/\([^/]*\)$#\1#'`;
nazev=$(basename $name)
Takze tohle je ten vysledny aktualni nazev?
$ nazev="/cesta/k/nejakemu/souboru/nazev_souboru"
$ echo $nazev
/cesta/k/nejakemu/souboru/nazev_souboru
$ basename $nazev
nazev_souboru
Využívej víc manuálové stránky a jednotlivé dílčí části si zkoušej na jednoduchých příkladech pro lepší pochopení jak to funguje.
metamail
.
Pouzivam na to RIPMIME ...
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.