Poche righe in bash

  • Creatore
    Topic
  • #76157
    Up
    0
    Down
    ::


    Salve.
    Dopo aver cambiato sistema operativo sto configurando gedit per il lavoro con TeX.
    Mi trovo alle prese con le seguenti righe bash (destinate a diventare il comando di compilazione in gedit)

    `#!/bin/sh
    TEXFILE=test.tex # il file con il codice TeX
    PDFFILE=${TEXFILE/%.*/.pdf} # DOVREBBE essere “test.pdf”
    LOGFILE=${TEXFILE/%.*/.log} # DOVREBBE essere “test.log”
    if pdftex -halt-on-error -synctex=1 $TEXFILE; then # se la compilazione riesce…
    evince $PDFFILE # apre il file pdf in evince
    else gedit $LOGFILE # altrimenti mostra il file di log
    fi`

    già al terzo rigo (PDFFILE=${TEXFILE/%.*/.pdf}) ricevo l’errore “Bad substitution”.

    Qualcuno può dirmi dov’è l’errore?

    Grazie, ciao.

Visualizzazione 5 filoni di risposte
  • Autore
    Risposte
    • #76158
      Up
      0
      Down
      ::


      Precisamente che distribuzione stai usando? A dispetto di quanto dice molta gente, sh è (in generale) diverso da bash, per esempio su Debian e Ubuntu sh è un link simbolico alla shell dash, quindi se vuoi usare la bash nella prima riga scriverai esattamente /bin/bash, se invece vuoi scrivere uno script portabile, che possa girare su una qualsiasi shell senza sfruttare nessuna funzione builtin in una particolare shell la scelta /bin/sh potrebbe essere corretta. Infatti su Debian lo script sembra funzionare se metto /bin/bash al posto di /bin/sh

      P. S. dove hai trovato questa soluzione per compilare documenti LaTeX in gedit? Non mi sembra il massimo della comodità se il nome del file è scritto staticamente nello script… Sinceramente mi sono trovato piuttosto male con gedit per scrivere documenti LaTeX (almeno rispetto a molti altri editor), anche usando lo specifico plugin (che mi sembra faccia più danni che altro), ma questa è una mia considerazione personale e non ho intenzione di convincerti di questo

    • #76159
      Up
      0
      Down
      ::


      – Usavo ubuntu. Sono passato da poco a Mint; dalle prime esperienze sembra un bel passo avanti;
      – Non uso il plugin LaTeX/Gedit in quanto non uso LaTeX, ma plain.
      – Quelle poche righe devono diventare un comando gedit per mezzo del plugin standard “strumenti esterni”, che consente di chiamare programmi esterni all’editor e di eseguire script della shell.
      – Lo header #!/bin/sh è quello usato nel codice dei comandi forniti di default con il plugin.
      – Il codice postato serve solo come esempio (peraltro davvero non funzionante sulla mia macchina). Nello script finale il nome del file è scritto dinamicamente. Nel codice “vero” il secondo rigo dovrebbe essere
      `TEXFILE=$GEDIT_CURRENT_DOCUMENT_NAME # il file con il codice TeX`
      in modo che, mentre scrivo il codice, posso chiamare il compilatore e gestirne i codici di uscita.
      – da ultimo la mia opinione. Uso Gedit perchè è TOTALMENTE e facilmente configurabile. Ad esempio TeXWorks e Scite non sono così elastici e potenti. Gedit 3 (insieme a evince) gestisce synctex.

      ——————————

      p.s. – Il tuo post è stato utile. Testando il seguente codice

      `#!/bin/bash # <=== TEXFILE=$GEDIT_CURRENT_DOCUMENT_NAME # <=== PDFFILE=${TEXFILE/%.*/.pdf} LOGFILE=${TEXFILE/%.*/.log} if pdftex -halt-on-error -synctex=1 $TEXFILE; then evince $PDFFILE else gedit $LOGFILE fi` tutto funziona perfettamente. Grazie, ciao.

    • #76160
      Up
      0
      Down
      ::

      Sam Qasbah” post=75321– Lo header #!/bin/sh è quello usato nel codice dei comandi forniti di default con il plugin.

      Probabilmente chi ha scritto quelle righe di codice usa un sistema in cui /bin/sh punta a /bin/bash (se non sbaglio Fedora per default fa così), ma se la gente imparasse la differenza fra sh e bash vivremmo in un mondo (informaticamente) un po’ migliore. Non ha senso mettere /bin/sh e poi usare sostituzioni proprie della bash… (sia chiaro, non me la sto prendendo con te, non c’entri niente 😉 )

      Sam Qasbah” post=75321Uso Gedit perchè è TOTALMENTE e facilmente configurabile. Ad esempio TeXWorks e Scite non sono così elastici e potenti. Gedit 3 (insieme a evince) gestisce synctex.

      Se vuoi un editor totalmente configurabile dai un’occhiata a Emacs 😀 (potresti avere un po’ di difficoltà solo con synctex, ma ci stanno lavorando, con calma)

    • #76161
      Up
      0
      Down
      ::


      Oppure usa LaTeXila, è un ottimo editor per LaTeX

    • #76162
      Up
      0
      Down
      ::

      marcomg” post=75327Oppure usa LaTeXila, è un ottimo editor per LaTeX

      [OT]
      Ciao,
      se ti piace LaTeXilia puoi provare TeXStudio, che è simile. Inoltre ha un visualizzatore PDF integrato che permette la ricerca diretta e inversa tra sorgente e PDF (cosa che LaTeXilia sembra non avere ancora).

      Ciao
      Fra
      [/OT]

    • #76163
      OldClaudio
      Partecipante
        Up
        0
        Down
        ::

        Uso Gedit perchè è TOTALMENTE e facilmente configurabile. Ad esempio TeXWorks e Scite non sono così elastici e potenti. Gedit 3 (insieme a evince) gestisce synctex

        Di Scite non so nulla, ma di TeXworks sì; gestisce perfettamente synctex, anzi è il suo punto di forza per permettere la ricerca diretta e inversa con il suo ottimo visualizzatore PDF interno. Per me gedit è un giocattolo, fortemente personalizzabile e configurabile, ma non ha assolutamente la potenze e la completezza di TeXworks.

        Poi come ti è stato detto, se sei incline ad un periodo di martirio iniziale, per poi avere soddisfazioni enormi, passa a emacs; ogni utente di Linux dovrebbe essere geneticamente incline ad usare emacs 🙂

    Visualizzazione 5 filoni di risposte
    • Devi essere connesso per rispondere a questo topic.

    Go to top