Премини към съдържанието
philip_stefanov

bash script проблем

    Препоръчан отговор


    Здравейте имах да пиша script на bash за разни zenity менюта , както и да е написах го...Обаче го написах на Slackware а трябва да го презентирам на mint9 и като го качих от slacka на minta и дава грешка.Аз си мисля , че е от разликите във версийте на bash на двете операционно системи 4.2.7 за slacka и 4.1.5 за minta нещо такова не помня точно.Та как да уеднаквя bash версийте и дали наистина проблемът е от това.

    Редактирано от filkataa (преглед на промените)

    Сподели този отговор


    Линк към този отговор
    Сподели в други сайтове

    Здравейте имах да пиша script на bash за разни zenity менюта , както и да е написах го...Обаче го написах на Slackware а трябва да го презентирам на mint9 и като го качих от slacka на minta и дава грешка.Аз си мисля , че е от разликите във версийте на bash на двете операционно системи

    4.2.7 за slacka и 4.1.5 за minta нещо такова не помня точно.Та как да уеднаквя bash версийте и дали наистина проблемът е от това.

    Проблема не е във версиите, дай скрипта и грешката и ще го оправим

    Сподели този отговор


    Линк към този отговор
    Сподели в други сайтове

    Проблема не е във версиите, дай скрипта и грешката и ще го оправим

    #!bin/bash

    function dispsysmsg {

    clear

    zenity --warning \

    --text="system is going for reboot in 10 minutes!"

    }

    function filecheck {

    clear

    if [ -e /root/mytest ]

    then

    zenity --info \

    --text="file allready exist!"

    else

    touch /root/mytest

    zenity --info \

    --text="file has been created successfully!"

    fi

    }

    function closewindow {

    clear

    zenity --question \

    --text="exiting are u sure?"

    if [ "$?" = 1 ]

    then

    clear

    else

    exit

    fi

    }

    function dispdir {

    clear

    cd /d

    ls -d */ | zenity --text-info --width 400 --height 400 --title="HOME DIRECTORY"

    }

    function feedback {

    clear

    ans=$(zenity --list --text "Is My Script Helpful?" --title="FEEDBACK" --radiolist --column="pick" --column="options" FALSE Amazing FALSE Average FALSE "Not Helpful");

    clear

    echo $ans

    exit

    }

    function menu {

    echo

    echo -e "\t\tMY MENU\n"

    echo -e "\t1. REBOOT\n"

    echo -e "\t2. CHECK MYTEST FILE\n"

    echo -e "\t3. DISPLAY HOME DIRECTORY\n"

    echo -e "\t4. EXIT\n"

    echo -e "\t5. FEEDBACK\n"

    echo -e "\t\tENTER YOUR CHOISE\n"

    read -n 1 option

    }

    while [ 1 ]

    do

    menu

    case $option in

    1) dispsysmsg;;

    2) filecheck;;

    3) dispdir;;

    4) closewindow;;

    5) feedback;;

    *) clear

    zenity --error \

    --text="Wrong Selection"

    esac

    done

    това е скрипта след малко ще дам и грешката само да пусна линукса тя беше unexpected "}"

    Сподели този отговор


    Линк към този отговор
    Сподели в други сайтове

    --text="system is going for reboot in 10 minutes!" } май трябва: --text="system is going for reboot in 10 minutes!"} но пък може грешката да отиде на 5 ред...

    Редактирано от the professor (преглед на промените)

    Сподели този отговор


    Линк към този отговор
    Сподели в други сайтове

    menu.sh: 6: Syntax error: "}" unexpected

    пробвай да изпълниш нещата така: bash -x shellscript.sh

    Сподели този отговор


    Линк към този отговор
    Сподели в други сайтове

    пробвай да изпълниш нещата така: bash -x shellscript.sh

    така го изпълнява както трябва с малко допълнителни екстри :clap:

    mint@mint ~/Desktop $ bash -x menu.sh

    + '[' 1 ']'

    + menu

    + echo

    + echo -e '\t\tMY MENU\n'

    MY MENU

    + echo -e '\t1. REBOOT\n'

    1. REBOOT

    + echo -e '\t2. CHECK MYTEST FILE\n'

    2. CHECK MYTEST FILE

    + echo -e '\t3. DISPLAY HOME DIRECTORY\n'

    3. DISPLAY HOME DIRECTORY

    + echo -e '\t4. EXIT\n'

    4. EXIT

    + echo -e '\t5. FEEDBACK\n'

    5. FEEDBACK

    + echo -e '\t\tENTER YOUR CHOISE\n'

    ENTER YOUR CHOISE

    + read -n 1 option

    Сподели този отговор


    Линк към този отговор
    Сподели в други сайтове

    така го изпълнява както трябва с малко допълнителни екстри :clap:

    mint@mint ~/Desktop $ bash -x menu.sh

    + '[' 1 ']'

    + menu

    + echo

    + echo -e '\t\tMY MENU\n'

    MY MENU

    + echo -e '\t1. REBOOT\n'

    1. REBOOT

    + echo -e '\t2. CHECK MYTEST FILE\n'

    2. CHECK MYTEST FILE

    + echo -e '\t3. DISPLAY HOME DIRECTORY\n'

    3. DISPLAY HOME DIRECTORY

    + echo -e '\t4. EXIT\n'

    4. EXIT

    + echo -e '\t5. FEEDBACK\n'

    5. FEEDBACK

    + echo -e '\t\tENTER YOUR CHOISE\n'

    ENTER YOUR CHOISE

    + read -n 1 option

    Нормално, това е дебъг режим :wors:

    Само не ми е ясно защо слагате силом ентър на края на echo, това е по поразбиране. Ако тлкова държите на по-извратени формати за печат ползвайте printf

    Сподели този отговор


    Линк към този отговор
    Сподели в други сайтове

    Нормално, това е дебъг режим :biggrin:

    Само не ми е ясно защо слагате силом ентър на края на echo, това е по поразбиране. Ако тлкова държите на по-извратени формати за печат ползвайте printf

    така на учат какво да направя :cheers: под slack всичко изглежда супер менюто :)

    как да го разкарам :)

    Сподели този отговор


    Линк към този отговор
    Сподели в други сайтове

    така на учат какво да направя :biggrin: под slack всичко изглежда супер менюто :cheers:

    как да го разкарам :)

    ползвайте само

    echo "text"
    • Харесва ми 1

    Сподели този отговор


    Линк към този отговор
    Сподели в други сайтове

    А да попитам още нещо.В момента скрипта проверява дали съществува файла mytest, как да го направя първо да проверява дали съществува папката home/mint и чак тогава да проверява за файла?

    Сподели този отговор


    Линк към този отговор
    Сподели в други сайтове

    А да попитам още нещо.В момента скрипта проверява дали съществува файла mytest, как да го направя първо да проверява дали съществува папката

    home/mint и чак тогава да проверява за файла?

    А има ли смисъл? Ако папката или файла ги няма проверката ще върне false. Иначе става така

    if [ -d /path/to/directory ]
       then
    .....
       else
    ....
    fi
    

    Сподели този отговор


    Линк към този отговор
    Сподели в други сайтове

    А има ли смисъл? Ако папката или файла ги няма проверката ще върне false. Иначе става така

    if [ -d /path/to/directory ]
       then
    .....
       else
    ....
    fi
    
    Да знам вади грешка в скрипта, че няма директория обаче зенити менюто пак изкача със съобщение, че е създало файла въпреки, че не е...

    А и по условие ми беше първо да проверява за папакта после за файла ама аз вече го предадох така няма кой да са занимава :):):)

    Сподели този отговор


    Линк към този отговор
    Сподели в други сайтове

    Да знам вади грешка в скрипта, че няма директория обаче зенити менюто пак изкача със съобщение, че е създало файла въпреки, че не е...

    А и по условие ми беше първо да проверява за папакта после за файла ама аз вече го предадох така няма кой да са занимава :):):)

    А някой проверява ли дали операцията по създаването на файла е върнала код 0?

    Сподели този отговор


    Линк към този отговор
    Сподели в други сайтове

    А някой проверява ли дали операцията по създаването на файла е върнала код 0?

    В командировка е :)

    как да го направя :)

    Сподели този отговор


    Линк към този отговор
    Сподели в други сайтове

    В командировка е :yanim:

    как да го направя :yanim:

    Веднага след изпълнение на програмата за създаване на файла (тва проверява дали върнатия код е различен от нула

    if [ $? -ne 0 ]
       then
       ....
    fi
    

    Сподели този отговор


    Линк към този отговор
    Сподели в други сайтове

    Регистрирайте се или влезете в профила си за да коментирате

    Трябва да имате регистрация за да може да коментирате това

    Регистрирайте се

    Създайте нова регистрация в нашия форум. Лесно е!

    Нова регистрация

    Вход

    Имате регистрация? Влезте от тук.

    Вход


    ×

    Информация

    Този сайт използва бисквитки (cookies), за най-доброто потребителско изживяване. С използването му, вие приемате нашите Условия за ползване.