Задать вопрос
@historydev
long long long long long .... int

Как верно обработать результат функции которая возвращает 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 если найдено.
  • Вопрос задан
  • 143 просмотра
Подписаться 1 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Учебный центр IBS
    AL-1803 Расширенное администрирование Astra Linux Special Edition 1.8
    2 недели
    Далее
  • Onskills
    Системный администратор
    1 месяц
    Далее
  • Яндекс Практикум
    Фронтенд-разработчик
    10 месяцев
    Далее
Решения вопроса 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
if checkLocationExists "$path"; then
   echo ok
fi
#или
checkLocationExists "$path" && echo ok
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы