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