Сервер Weblogic требователен в отношении hwo, который он запускает. Делает сценарий /sbin/init.d/weblogic
запустите WLS как корень идентификатора пользователя, или он делает "su" к некоторому WLS-определенному идентификатору пользователя? Мне кажется, что WLS отказывается работать в соответствии с идентификатором пользователя root.
Другая вещь попробовать, измените владение /sbin/init.d/weblogic
соответствовать другим сценариям в /sbin/init.d/
.
Если Вы хотите любого затем, что Вы хотите OR
, нет AND
.
if [[ ! -f /etc/benchmarking/code ]] || [[ ! -f /etc/benchmarking/code.class ]]; then
echo "match"
fi
match
если оба не существуют.Но, Вы сказали:
Я на 110% уверен, что эти 2 файла не существуют. Я не получаю ошибок, это просто не входит если.
Таким образом, Ваш оператор противоречит себе. По крайней мере один из тех файлов должен существовать при выполнении того кода.
Если Вы хотите видеть как Ваш if
оператор оценивает, выполните его с -x
.
#!/bin/bash -x
if [[ ! -f /etc/benchmarking/code ]] && [[ ! -f /etc/benchmarking/code.class ]]; then
echo "match"
fi
Затем Вы будете видеть выполнение.
$ ./test.sh
+ [[ ! -f /etc/benchmarking/code ]]
+ [[ ! -f /etc/benchmarking/code.class ]]
+ echo match
match
$
Разве это не должно быть похожим на это? A является файлом, или B является файлом, затем blabla.
if [[ -f /etc/benchmarking/code ]] || [[ -f /etc/benchmarking/code.class ]];
then
echo "match"
fi
Это может также работать на то, что Вы пытаетесь сделать. Одиночные скобки не являются наиболее часто используемыми сегодня с ударом, но это - все еще опция. Используя '-o' эффективно "ИЛИ" операция, и"!" инвертирует условие.
var=/etc/benchmarking/code
[ ! -f ${var} -o -f {var}.class ] && echo "match"
[
в bash
. Кроме этого, мне не удается видеть, как это отвечает на вопрос.
– jw013
13.09.2012, 16:52
[ ! -f ${var} -a ! -f {var}.class ] && echo "match"
это должно быть. Поиски были: если они (оба) не существуют, это должно echo match
.
– hschou
02.09.2016, 18:56
Ваш код удовлетворяет вашим требованиям: он напечатает совпадение
при условии, что он не может найти ни один файл.
Следовательно, причина совпадения
не печатается в другом месте. Вы должны подтвердить, что блок кода достигнут, что вы можете сделать, окружив его парой отладочных сообщений. Например, вот так:
echo '@ About to enter if...fi block'
if [[ ! -f /etc/benchmarking/code ]] && [[ ! -f /etc/benchmarking/code.class ]]; then
echo "match"
fi
echo '@ Finished if...fi block'
Я обычно предпочитаю, чтобы отладочные сообщения направлялись на stderr , чтобы не прерывать поток данных на stdout , но я избегал этого здесь потому что ты сказал, что был новичком. Вот один пример, показывающий, как можно написать в stdout :
echo '@ About to enter if...fi block' >&2