@historydev
Острая аллергия на анимешников

Как верно обработать результат функции которая возвращает boolean?

checkLocationExists () {
  pathWithShieldingSlash=$(echo "$1" | sed 's/\//\\\//g')
  isPathExists=$(sed -n 's/.*\(location '"$pathWithShieldingSlash"'.*\).*{/\1/p' "$locations_path/$file_name")

  if [[ -z $isPathExists ]]; then
    return 0
  else
    return 1
  fi
}

test=$(checkLocationExists "$path")

if [[ "$test" = true ]]; then
  echo "FOUND"
else
  echo "NOT FOUND"
fi


Я всегда получаю NOT FOUND

А должен получать FOUND если найдено.
  • Вопрос задан
  • 100 просмотров
Решения вопроса 1
saboteur_kiev
@saboteur_kiev Куратор тега bash
software engineer
if checkLocationExists "$path"; then
  echo "FOUND"
else
  echo "NOT FOUND"
fi


да и функцию можно упростить

checkLocationExists () {
  pathWithShieldingSlash=$(echo "$1" | sed 's/\//\\\//g')
  isPathExists=$(sed -n 's/.*\(location '"$pathWithShieldingSlash"'.*\).*{/\1/p' "$locations_path/$file_name")
  return [[ -z $isPathExists ]]
}


тут в принципе даже return не обязателен - вернет результат последней команды, но с return лучше читается
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@xibir
if checkLocationExists "$path"; then
   echo ok
fi
#или
checkLocationExists "$path" && echo ok
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы