• Opret dig
  • Glemt adgangskode

User account menu

  • Artikler
  • Forside
  • Forum
  • Nyheder
  • Log ind
Hjem
LinuxIN.dk

Snak med

Opret dig!

Af bigblop | 12.03.2008 00:11

Hjælp til bash script

Hjælp generelt
Jeg har lavet et bash script som konvertere nogle figurer/billeder. Men findes der en måde at:

1) Tjekke at fx filtypen .png, .eps etc eksistere før der forsøges at konvertere.

2) Kun konvertere hvis originalerne har ændret sig siden sidste konvertering (ala make)

Konverteringen udføres i nedenstående loops, hvis i har forslag til andre forbedringer som kom gerne med dem!

#!/bin/bash

# Enter below:
START=/home/bob/Desktop/test/ # Location of .tex files.
INC=pic/ # Location of images and figures.
TEXFILE=test # Name of main .tex file to compile (without extension)

# Based on above config.
DVIFILE=${TEXFILE}.dvi # Name of main .dvi file.
PSFILE=${TEXFILE}.ps # Name of main .ps file.
latex=1 # Convert to eps.
pdflatex=2 # Convert to pdf.
userinput=$@ # If pdflatex or latex should be used.


# latex: PDF + PNG >> PS and FIG >> EPS + PDF
if [ $userinput == $latex ];then
# Convert
cd $INC
for i in *pdf; do j=`echo $i |sed -e 's/.pdf//'`; pdf2ps "$i" ${j}.ps; done;
for i in *png; do j=`echo $i |sed -e 's/.png//'`; convert "$i" ${j}.ps; done;
for i in *fig; do j=`echo $i |sed -e 's/.fig//'`; figtex2pdf -k "$i"; done;

# Compile
cd $START
latex $TEXFILE
dvips $DVIFILE
epstopdf $PSFILE
fi

# pdflatex: EPS + PS >> PDF and FIG >> PDF
if [ $userinput == $pdflatex ];then
# Convert
cd $INC
# Might throw error!
# for i in *ps; do j=`echo $i |sed -e 's/.ps//'`; epstopdf "$i"; done;
for i in *ps; do j=`echo $i |sed -e 's/.ps//'`; ps2pdf "$i"; done;
for i in *fig; do j=`echo $i |sed -e 's/.fig//'`; figtex2pdf "$i"; done;

# Compile
cd $START
pdflatex $TEXFILE
fi
  • Log ind eller opret dig for at tilføje kommentarer

Kommentarer3

# 1

17 år 9 måneder siden

Permalink

Indsendt af divineant den 12. marts 2008 kl. 01:20

Permalink

Re: Hjælp til bash script

Tjek om fil eksisterer

file=$1
if [ -e $file ]; then
echo $file eksisterer;
else
echo $file eksisterer ikke;
fi


Hvilken er nyest:

file1=$1
file2=$2
if [ $file1 -nt $file2 ]; then
echo $file1 er nyest;
else
echo $file2 er nyest;
fi


Bemærk iøvrigt at programmet der bliver kørt når du laver en [ EXPRESSION ] er "test", så "man test" er en glimrende kilde til bash script oplysninger.
  • Log ind eller opret dig for at tilføje kommentarer

# 2

17 år 9 måneder siden

Permalink

Indsendt af bigblop den 12. marts 2008 kl. 10:43

Permalink

Re: Hjælp til bash script

Ok det jeg skal bruge er mere om et directory indeholder fx pdfer. Jeg har prøvet med:


pdf=*.pdf
if [ $pdf != '*.pdf' ]; then
echo $pdf #eksisterer;
fi

Men hvis der er flere end een pdf så får jeg en fejl om at der er for mange argumenter. Er der en mere elegant måde at gøre ovenstående på eller findes der en operator som piller den første streng udad $pdf ($pdf[0] dur ikke).
  • Log ind eller opret dig for at tilføje kommentarer

# 3

17 år 9 måneder siden

Permalink

Indsendt af divineant den 12. marts 2008 kl. 11:15

Permalink

Re: Hjælp til bash script

det er fordi din $pdf variabel er oprettet som en streng. hvis du istedet gør således:

pdf=(*.pdf)

får du et array hvor du kan validere på ${pdf[0]}
  • Log ind eller opret dig for at tilføje kommentarer

Svar søges

Linux Foundation brugte 8,4 millioner dollars på Linux Kernel projektet i 2025 0
KDE overgår indsamlingsmålet for 2025 med rekordstor støtte fra lokalsamfundet 0
Zypper Package Manager brugervejledning til openSUSE brugere og deres derivater 0
KDE Spectacle tilføjer OCR understøttelse for at kopiere tekst direkte fra skærmbilleder 0
Deaktiverer alle AI-funktioner i Firefox Web Browser 0

Seneste aktivitet

Nu kan man skrive private beskeder 3
Glædelig Jul 3
Kunstig inteligens 4
Kopiering til min Samsung telefon 5
Mbox mail import til Thunderbird 14
FOSS i Færdselsstyrelsen 2
Program ala Dreamweaver 2
Test af forum 5
Flatpak og hvorfor 1
Har brugt GLF OS, en NixOS-baseret distribution lavet i Frankrig. 2
Crontab 2
[ LØST ] Flere genveje på Firefox skrivebordet 5
Linuxin er nu migreret til Drupal 11 15
Dansk distro til software udviklere 3
Driver til min scanner? 3
Affinity V3 2
copy hvordan 1
Sortering af filer - sort of... 4
Det der ikke må galt gik galt 5
VPN — 8 tests, 1 klar vinder i 2025 3

© 2025 Linuxin og de respektive skribenter

Oprettet og drevet af nørder siden 2004 !