Už to mám skoro hotové, ale ještě se mi nedaří správně nastavit cyklus while. Poradíte mi to dořešit?
Příklad volání funkce:
listfiles "$dir_backups/$disk_dir/mbr" *.img byte;
nebo
listfiles "$media_path" "*.dd" gigabyte;
change_path(){
old=$'IFS'; IFS=$'\n'
echo -e '\E[1;37mVlož vlastní cestu k adresari, napr. /media/cdrom \E[1;0m';
read path;
IFS=$old;
}
function listfiles()
{
old=$'IFS'; IFS=$'\n'; $result=0
if [ "$3" == "byte" ]; then
path=$1
while [ "$result" != "0" ]; do
files=("$path/$2")
ls ${files} 2>/dev/null && result=1 && clear || { clear && echo Soubory $2 nenalezeny; change_path; }
done
list=$(find "$path" -type f -name "$2" -printf "%TH:%TM:%TS %Td.%Tm.%TY %s %P\n"| awk '{for (i=4;i <= NF;i++) printf("%s ",$i); print "\033[1;32m",int($3)" bytů","\033[1;36m",$2,"\033[1;0m",substr($1,1,8);}')
elif [ "$3" == "gigabyte" ]; then
path=$1
while [ "$result" != "0" ]; do
files=("$path/$2")
ls ${files} 2>/dev/null && result=1 && clear || { clear && echo Soubory $2 na nenalezeny; change_path;}
done
list=$(find "$path" -type f -name "$2" -printf "%TH:%TM:%TS %Td.%Tm.%TY %s %P\n"| awk '{for (i=4;i <= NF;i++) printf("%s ",$i); print "\033[1;32m",int($3/1000/1000/100)/10"GB","\033[1;36m",$2,"\033[1;0m",substr($1,1,8);}')
fi;
Když v předvoleném adresáři nejsou soubory nalezeny, vypíše požadavek na zadání vlastní cesty.
Když cesta není správná, má to znovu opakovat funkci change_path (ovšem děje se mi to, že se ten read znovu nespustí)
Pokud cesta je správná, provede výpis souborů z adresáře a vy si můžete vybrat který soubor chcete...
Takže jen tu smyčku opravit.