Премини към съдържанието
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

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


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

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

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

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

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

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

Вход

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

Вход

×

Информация

Поставихме бисквитки на устройството ви за най-добро потребителско изживяване. Можете да промените настройките си за бисквитки, или в противен случай приемаме, че сте съгласни с нашите условия за ползване.