Спецификация языка Java говорит, что:
Пустое заявление
Пустое утверждение ничего не делает.
EmptyStatement: ;
Выполнение пустой инструкции всегда выполняется нормально
Это по сути означает, что вы хотите выполнить пустую инструкцию, если a == b
if(a == b);
Что вы должны сделать:
Существует две основных решения этой проблемы:
- Вы можете избежать проблем с пустой инструкцией с помощью форматирования кода и окружающего материала внутри
if
с{
и}
. Сделав это, ваш пустой оператор будет намного читабельнее.if(a == b){ ; }
- Вы также можете проверить инструменты, используемые для анализа статического кода, такие как: [/g6] Findbugs Checkstyle Pmd Они могут мгновенно выделить такие проблемы, как этот.
Я бы рекомендовал объединить оба решения.
Вы можете «поймать» ошибку, используя ||
, и команда, которая должна выйти из состояния 0:
ls $PATH || echo "$PATH does not exist"
Поскольку сложная команда преуспевает, существует или нет $PATH
, set -e
не запускается, и ваш скрипт не выйдет.
Чтобы подавить ошибку беззвучно, вы можете использовать команду true
:
ls $PATH || true
Чтобы выполнить несколько команд, вы можете использовать одна из составных команд:
ls $PATH || { command1; command2; }
или
ls $PATH || ( command1; command2 )
Просто убедитесь, что ничего не происходит внутри любой из составных команд. Одним из преимуществ второго примера является то, что вы можете отключить режим немедленного выхода внутри подоболочки, не влияя на его статус в текущей оболочке:
ls $PATH || ( set +e; do-something-that-might-fail )
Другой вариант - использовать trap
, чтобы поймать сигнал EXIT
:
trap 'echo "ls failed" ; some_rescue_action' EXIT
ls /non_exist
одно решение будет проверять существование папки
function myLs() {
LIST=""
folder=$1
[ "x$folder" = "x" ] && folder="."
[ -d $folder ] && LIST=`ls $folder`
echo $LIST
}
Таким образом, bash не сбой, если $folder
не существует
ls
завершается с ошибкой, она все равно печатает сообщение, что так и так происходит соло, но есть способ подавить это? Кроме того, в частиOR
есть способ выполнить 2 строки кода? – Bhushan 20 September 2012 в 04:18