Вы даже можете смоделировать очередь, используя только один стек. Второй (временный) стек может быть смоделирован стеком рекурсивных вызовов метода вставки.
Принцип остается неизменным при добавлении нового элемента в очередь:
Класс очереди, использующий только один стек, будет выглядеть следующим образом:
public class SimulatedQueue<E> {
private java.util.Stack<E> stack = new java.util.Stack<E>();
public void insert(E elem) {
if (!stack.empty()) {
E topElem = stack.pop();
insert(elem);
stack.push(topElem);
}
else
stack.push(elem);
}
public E remove() {
return stack.pop();
}
}
Попробуйте:
invoke-rc.d tomcat stop > /dev/null 2>&1 || true
Немного предыстории:
user@tower: # true
user@tower: # echo $?
0
user@tower: # false
user@tower: # echo $?
1
user@tower: # which true
/bin/true
user@tower: # which false
/bin/false
Реальное реальное решение смотрит на сценарий инициализации tomcat, чтобы узнать, как он узнает, запущен ли tomcat :) Это Кстати, вы не приставаете к нему без нужды.
См. этот пост о другом предложении отключить / установить + e. Хотя это решит вашу непосредственную проблему, вы можете обнаружить, что вам нужно недавно отключенное поведение в вашем собственном скрипте, особенно если вы копируете файлы.
Это одна из основных причин, по которым были сделаны true и false, помимо создания Make-файлы ведут себя так, как ожидалось, в различных средах сборки.
Кроме того, set + e не совсем переносимый, то есть некоторые версии Solaris (и даже Dash) .. но я сомневаюсь, что это вас беспокоит.
Отключите параметр «немедленно выйти» с помощью set + e
, запустите вашу команду, затем, при необходимости, снова включите ее с помощью set -e
:
set +e
invoke-rc.d tomcat stop
set -e # optional
См. раздел 4.3.1 руководства Bash для объяснения встроенной функции set
и всех ее различных опций (которых много).
Если invoke-rc.d tomcat stop - единственное, что вы хотите защитить от сбоя, возможно, invoke-rc.d tomcat stop || правда может? Это никогда не должно иметь ненулевой статус выхода.
Используйте команду bash set для временного отключения поведения выхода при ненулевом значении.
set +e
invoke-rc.d tomcat stop
set -e
Попробуйте перенаправить стандартную ошибку в файл ... что-то вроде 2> myerror.