#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
Комментариев нет:
Отправить комментарий