• 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

18 år 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

18 år 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

18 år 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

KDE Plasma 6.6 skrivebordsmiljø udgivet 0
youtube-tui: Nyd YouTube fra terminalen som en professionel 0
GRUB 2.14 introducerer understøttelse af EROFS, forbedringer til Btrfs og LVM 0
KDE Plasma 6.6 tilføjer en funktion, som brugerne har spurgt efter i evigheder 0
Linux i København 12.01.2026: Open source i det offentlige 0

Seneste aktivitet

BigLinux 5
Det engang så elskede PCLinuxOS er tilbage - og det er stadig en fantastisk Windows erstatning 1
rsync og filsystem 6
Mousam er en detaljeret desktop vejrapp til Linux 1
Hjælp til Handbrake - ingen dk-undertekster 1
luckyBackup 2
GIMP 30
Pinegrow på Debian 13 ? 4
Openmediavault 1
E-mail blues 9
Driver til min scanner? 5
Printer Epson ET-2865 problem 16
Sudo 7
Thunderbird filvedligeholdelse 2
Debian 13.3.0 8
Linux Mint 22.3 - hvornår opdatere? 10
Canon-printer: Jeg savner "Ink-Toner Level"-meddelelse 10
billede af nuværende installation 2
mapper 4
LinuxIn live 9

© 2026 Linuxin og de respektive skribenter

Oprettet og drevet af nørder siden 2004 !