1

Я запускаю последовательность команд в xterm:xterm -sb -bg black -fg white -e "pdflatex --shell-escape -file-line-error-style | && biber | && pdflatex --shell-escape -interaction nonstopmode -file-line-error-style | && pdflatex --shell-escape -interaction nonstopmode -file-line-error-style | && evince |.pdf &" (каналы заполняются именем файла с помощью jEdit при выполнении команды называется, но это не проблема jEdit).

Если я вызываю его с помощью xterm -hold он остается открытым, и мне приходится закрывать его с помощью мыши или Alt+F4. Если я вызываю это без -hold, оно идет, и я не вижу, какова была последняя команда, которая успешно завершила.

Так есть ли способ либо:

  1. вызвать xterm с условным удержанием или
  2. закройте xterm с помощью команды, когда он был вызван с помощью -hold (ввод команды exit закрывает окно xterm, открытое без -hold, но не открываемое с -hold.

2 ответа2

1

Если вы можете использовать bash попробуйте это. Здесь ключ set -o pipefail является ключевым - он заставляет bash выходить из любой команды в конвейерной цепочке команд с кодом выхода. При использовании pipefail случае сбоя какой-либо команды в цепочке статус ошибки всегда будет нулевым (независимо от того, произошла ошибка или нет).

#!/bin/bash
set -o pipefail
xterm -sb -bg black -fg white -e ....  # without -hold option
wait $!                                # wait for exit status of command
if [ $? -ne 0 ];then                   # $? holds exit status, test if error occurred
        read -p "Error - press any key to exit "
fi
exit 0
1

Я не смог заставить работать решение, данное подозреваемым, но вдохновленный этим ответом, я получил следующее:

Теперь я просто выполняю xterm -sb -bg black -fg white -e "~/.jedit/macros/LaTeX/pdflatex.sh |" & из jEdit, pdflatex.sh выглядит следующим образом:

pdflatex --shell-escape -file-line-error-style $1  
if [ $? -ne 0 ]; then 
    read -p "Error - press any key to exit "
    exit 0
fi
biber $1  
if [ $? -ne 0 ]; then 
    read -p "Error - press any key to exit "
    exit 0
fi
pdflatex --shell-escape -file-line-error-style -interaction nonstopmode $1 
if [ $? -ne 0 ]; then 
    read -p "Error - press any key to exit "
    exit 0
fi
pdflatex --shell-escape -file-line-error-style -interaction nonstopmode $1 
if [ $? -ne 0 ]; then 
    read -p "Error - press any key to exit "
    exit 0
fi
nohup evince $1.pdf  & 
exit 0

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .