Diskuze: [Bash] Jak přizpůsobit funkci, aby četla hodnoty array?


Luboš Běhounek Satik:9.2.2020 11:34
Ahoj, v bashi jsem delal jeden semestr ve skole nekde pred asi 13 rokama,
takze doufam, ze me nekdo doplni/opravi
ve cteni stranky by mel byt parametr -a co to umi nacist do pole, takze si musis vytvorit pole, do ktereho to ulozis, pak to do nej pres parametr -a nactes
ted mas v poli cisla stranek, takze pro vypis vsech stranek budes potrebovat for cyklus, takze neco jako
for cisloStranky in poleStranek
do
tady zavolat tvoji hlavni funkci, kde to provadis a jako parametr ji predat cisloStranky
done
jeste bude potreba upravit funkci convert, aby brala jako parametr cislo stranky a nepouzivala globalni promennou page
Daniel Pitra:9.2.2020 11:50
To jsem prave presne zkousel udelat. Syntaxi pro ziskani promenne "$page" jsem upravil takto,
read -e -p "Page to be converted (leave blank for first): " -a page
if [[ -z "$page" ]]; then
page="0"
break
else
break
fi
aby mi vzal vice cisel oddelene carkou, nebo mezerou... Ve funkci jsem pak zkousel pridat kod
for pages in ${page[*]}
do
# finalni kod funkce CONVERT s upravenou promennou $page na $pages
done
Akorat tady mi to dela bordel, jak tam mam jeste nastavenou kontrolu, jestli uz soubor se stejnym nazvem ve slozce nahodou neexistuje...
Daniel Pitra:9.2.2020 16:00
Prvni "if" ve funkci...
CONVERT()
{
num=0
name=$(basename "$file" .pdf | cut -d- -f1 | sed 's/.$//' | tr ' ' '-')
ext="png"
mark='/path/to/the/watermark.png'
if [[ ! -e "$path"/"$name"_$num.$ext ]]; then
echo "Creating thumbnail ..."
convert -quiet -density 300 -quality 100 -thumbnail x1815 -background white -alpha remove "$file"[$page] "$path"/"$name"_$num.$ext
else
while [[ -e "$path"/"$name"_$num.$ext ]]; do
(( num++ ))
done
echo "Creating thumbnail ..."
convert -quiet -density 300 -quality 100 -thumbnail x1815 -background white -alpha remove "$file"[$page] "$path"/"$name"_$num.$ext
fi
while :
do
read -n 1 -s -p "Add watermark? [Y/n]" watermark
case $watermark in
""|[yY] )
echo ""
echo "Adding watermark to thumbnail ..."
convert -quiet "$path"/"$name"_$num.$ext "$mark" -gravity center -composite "$path"/"$name"_$num.$ext
echo "DONE!"
exit;
;;
[nN] )
echo ""
echo "DONE!"
exit;
;;
* )
echo ""
echo "Use only 'y' or 'n' !"
esac
done
}
Luboš Běhounek Satik:9.2.2020 16:15
tady porad pouzivas page, ale mel bys pages, ne?
resp. prejmenopval bych to, ted je to obracene, v promenne page mas cely pole
stranek a promenna v cyklu, kde mas cislo jedny stranky mas pojmenovanou pages,
takze to trochu mate
Az se dostanu k pocitaci, tak poslu zmeneny kod
Tak jsem to prejmenovaal a takhle teda ted vypada funkce "CONVERT":
CONVERT()
{
num=0
name=$(basename "$file" .pdf | cut -d- -f1 | sed 's/.$//' | tr ' ' '-')
ext="png"
mark='/path/to/the/watermark.png'
if [[ ! -e "$path"/"$name"_$num.$ext ]]; then
for page in ${pages[*]}
do
echo "Creating thumbnail ..."
convert -quiet -density 300 -quality 100 -thumbnail x1815 -background white -alpha remove "$file"[$page] "$path"/"$name"_$num.$ext
done
else
while [[ -e "$path"/"$name"_$num.$ext ]]; do
(( num++ ))
done
for page in ${pages[*]}
do
echo "Creating thumbnail ..."
convert -quiet -density 300 -quality 100 -thumbnail x1815 -background white -alpha remove "$file"[$page] "$path"/"$name"_$num.$ext
done
fi
while :
do
read -n 1 -s -p "Add watermark? [Y/n]" watermark
case $watermark in
""|[yY] )
echo ""
echo "Adding watermark to thumbnail ..."
convert -quiet "$path"/"$name"_$num.$ext "$mark" -gravity center -composite "$path"/"$name"_$num.$ext
echo "DONE!"
exit;
;;
[nN] )
echo ""
echo "DONE!"
exit;
;;
* )
echo ""
echo "Use only 'y' or 'n' !"
esac
done
}
Uz je to hodne blizko, ale ted to dela to, ze to sice spusti ten prikaz spravne (podle poctu zadanych stranek), ale neprejmenuje ty soubory spravne, takze se prepisou a nazev zustava porad stejny...
Tak jednu cast jsem dokazal! Uz to umi precist vsechny stranky a pridelit
tomu spravne nazvy!
Stacilo to jen mezi sebou prohodit...
CONVERT()
{
num=0
name=$(basename "$file" .pdf | cut -d- -f1 | sed 's/.$//' | tr ' ' '-')
ext="png"
mark='/Users/danielpitra/Documents/--- Wordpress ---/- DanielPitra.cz -/--- img ---/watermark2.png'
for page in ${pages[*]}
do
if [[ ! -e "$path"/"$name"_$num.$ext ]]; then
echo "Creating thumbnail ..."
convert -quiet -density 300 -quality 100 -thumbnail x1815 -background white -alpha remove "$file"[$page] "$path"/"$name"_$num.$ext
else
while [[ -e "$path"/"$name"_$num.$ext ]]; do
(( num++ ))
done
echo "Creating thumbnail ..."
convert -quiet -density 300 -quality 100 -thumbnail x1815 -background white -alpha remove "$file"[$page] "$path"/"$name"_$num.$ext
fi
done
while :
do
read -n 1 -s -p "Add watermark? [Y/n]" watermark
case $watermark in
""|[yY] )
echo ""
echo "Adding watermark to thumbnail ..."
convert -quiet "$path"/"$name"_$num.$ext "$mark" -gravity center -composite "$path"/"$name"_$num.$ext
echo "DONE!"
exit;
;;
[nN] )
echo ""
echo "DONE!"
exit;
;;
* )
echo ""
echo "Use only 'y' or 'n' !"
esac
done
}
Ted mi teda akorat zbyva, jak udelat to, aby se skript zeptal, u kterych stranek ma pridat vodotisk a u kterych ne...
Mam to! Sice mi to prijde dost "neohrabane", ale funguje to...
Funkce "CONVERT" teda nyni vypada takhle:
CONVERT()
{
num=0
name=$(basename "$file" .pdf | cut -d- -f1 | sed 's/.$//' | tr ' ' '-')
ext="png"
mark='/path/to/the/watermark.png'
for page in ${pages[*]}
do
if [[ ! -e "$path"/"$name"_$num.$ext ]]; then
echo "Creating thumbnail ..."
convert -quiet -density 300 -quality 100 -thumbnail x1815 -background white -alpha remove "$file"[$page] "$path"/"$name"_$num.$ext
while :
do
read -n 1 -s -p "Add watermark? [Y/n]" watermark
case $watermark in
""|[yY] )
echo ""
echo "Adding watermark to thumbnail ..."
convert -quiet "$path"/"$name"_$num.$ext "$mark" -gravity center -composite "$path"/"$name"_$num.$ext
echo "DONE!"
exit;
;;
[nN] )
echo ""
echo "DONE!"
exit;
;;
* )
echo ""
echo "Use only 'y' or 'n' !"
esac
done
else
while [[ -e "$path"/"$name"_$num.$ext ]]; do
(( num++ ))
done
echo "Creating thumbnail ..."
convert -quiet -density 300 -quality 100 -thumbnail x1815 -background white -alpha remove "$file"[$page] "$path"/"$name"_$num.$ext
while :
do
read -n 1 -s -p "Add watermark? [Y/n]" watermark
case $watermark in
""|[yY] )
echo ""
echo "Adding watermark to thumbnail ..."
convert -quiet "$path"/"$name"_$num.$ext "$mark" -gravity center -composite "$path"/"$name"_$num.$ext
echo "DONE!"
break
;;
[nN] )
echo ""
echo "DONE!"
break
;;
* )
echo ""
echo "Use only 'y' or 'n' !"
esac
done
fi
done
}
+5 Zkušeností

Zobrazeno 13 zpráv z 13.