Вы не можете использовать оператор ||
(или) в пределах hasClass
. Попробуйте это:
if ($('#menu-item-49').hasClass('current-menu-item') ||
$('#menu-item-49').hasClass('current-menu-parent')) {
$('ul.sub-menu ').css('display', 'block');
}
Или вы можете сделать это, если это слишком многословно:
var $menuItem = $('#menu-item-49');
if ($menuItem.hasClass('current-menu-item') ||
$menuItem.hasClass('current-menu-parent')) {
$('ul.sub-menu ').css('display', 'block');
}
Или еще лучше:
var $menuItem = $('#menu-item-49');
if ($menuItem.is('.current-menu-item, .current-menu-parent')) {
$('ul.sub-menu ').css('display', 'block');
}
Я предполагаю, что Вы хотите все еще видеть STDERR и STDOUT на терминале. Вы могли пойти для ответа Josh Kelley, но я нахожу хранение a tail
вокруг в фоновом режиме, который производит Ваш файл журнала очень hackish и cludgy. Заметьте, как Вы должны сохранить exra FD и сделать очистку позже путем уничтожения ее и технически должны делать это в a trap '...' EXIT
.
Существует лучший способ сделать это, и Вы уже обнаружили его: tee
.
Только, вместо того, чтобы просто использовать его для Вашего stdout, имейте мишень для stdout и один для stderr. Как Вы выполните это? Замена процесса и перенаправление файла:
command > >(tee -a stdout.log) 2> >(tee -a stderr.log >&2)
Давайте разделим его и объясним:
> >(..)
>(...)
(замена процесса), создает FIFO и позволяет tee
послушайте на нем. Затем это использует >
(перенаправление файла) для перенаправления STDOUT command
к FIFO, что Ваше первое tee
слушает на.
То же самое для второго:
2> >(tee -a stderr.log >&2)
Мы используем замену процесса снова для создания a tee
процесс, который читает из STDIN и выводит его в stderr.log
. tee
производит его вход назад на STDOUT, но так как его вход является нашим STDERR, мы хотим перенаправить tee
STDOUT к нашему STDERR снова. Затем мы используем перенаправление файла для перенаправления command
STDERR к входу FIFO (tee
STDIN).
См. http://mywiki.wooledge.org/BashGuide/InputAndOutput
Замена процесса является одной из тех действительно прекрасных вещей, которые Вы получаете в качестве награды выбора bash
как Ваша оболочка в противоположность sh
(POSIX или Bourne).
В sh
, необходимо было бы сделать вещи вручную:
out="${TMPDIR:-/tmp}/out.$$" err="${TMPDIR:-/tmp}/err.$$"
mkfifo "$out" "$err"
trap 'rm "$out" "$err"' EXIT
tee -a stdout.log < "$out" &
tee -a stderr.log < "$err" >&2 &
command >"$out" 2>"$err"
Для перенаправления stderr в файл отобразите stdout, чтобы экранировать, и также сохранить stdout в файл:
./aaa.sh 2>ccc.out | tee ./bbb.out
Править: Для отображения и stderr и stdout, чтобы экранировать и также сохранить обоих в файл можно использовать перенаправление ввода-вывода удара:
#!/bin/bash
# Create a new file descriptor 4, pointed at the file
# which will receive stderr.
exec 4<>ccc.out
# Also print the contents of this file to screen.
tail -f ccc.out &
# Run the command; tee stdout as normal, and send stderr
# to our file descriptor 4.
./aaa.sh 2>&4 | tee bbb.out
# Clean up: Close file descriptor 4 and kill tail -f.
exec 4>&-
kill %1
При использовании удара:
# Redirect standard out and standard error separately
% cmd >stdout-redirect 2>stderr-redirect
# Redirect standard error and out together
% cmd >stdout-redirect 2>&1
# Merge standard error with standard out and pipe
% cmd 2>&1 |cmd2
Кредит (не отвечающий от вершины моей головы) идет сюда: http://www.cygwin.com/ml/cygwin/2003-06/msg00772.html