Страницы

Поиск по вопросам

воскресенье, 22 декабря 2019 г.

Получить результат из функции в Bash

#linux #bash #shell


Есть функция main, которая обращается за результатом к функции Checker.
 При выполнении скрипта, никаких сообщений из Cheker не выводится и не пишется "Все
ОК", хотя файлы существуют и имеют права на чтение.
Что я делаю не так?

 #!/bin/bash
    file1="$1"
    file2="$2"
    main()
    {   
            if  [ "$(checker)" == "true" ]
            then
                    echo "Все ОК"
            fi
    }
    checker()
    {
            flag=""
            if [ -f "$file1" ] && [ -f "$file2" ]
            then
                    echo "Файлы существуют"
                    if [ -r "$file1" ] && [ -r "$file2" ]
                    then
                            echo "Файлы могут быть прочитаны"
                            flag="true"
                    else
                            echo "Один из файлов не может быть прочитан"
                            flag= "false"
                    fi

            else
                    echo "Один из файлов не существует"
                    flag="false"
            fi

            echo "$flag"

    }
main

    


Ответы

Ответ 1



Из двух функций сделайте одну с проверкой по $flag Откройте для себя return [N] вместо flag

Ответ 2



Что я делаю не так? располагаете функцию до её вызова. перенесите функцию main в конец файла — и, скорее всего, вы получите ожидаемый результат.

Ответ 3



#!/bin/bash file1="$1" file2="$2" checker() { flag="" if [ -f "$file1" ] && [ -f "$file2" ] then echo "Файлы существуют" if [ -r "$file1" ] && [ -r "$file2" ] then echo "Файлы могут быть прочитаны" flag=true else echo "Один из файлов не может быть прочитан" flag=false fi else echo "Один из файлов не существует" flag=false fi echo $flag } checker main() { if [[ $(checker) == *true ]] then echo "Все ОК" fi } main

Комментариев нет:

Отправить комментарий