Автор Тема: Bash script  (Прочетена 11001 пъти)

ddantgwyn

  • Global Moderator
  • Напреднали
  • *****
  • Публикации: 1262
    • Профил
Re: Bash script
« Отговор #30 -: Apr 01, 2018, 22:46 »
   ЪЪЪ, аз нямах себе си предвид бе  ;D

Знам, ама виж и неговата регистрация ::)
Активен

the lamer's team honourable member

4096bits

  • Напреднали
  • *****
  • Публикации: 6198
    • Профил
Re: Bash script
« Отговор #31 -: Apr 02, 2018, 12:20 »
Моята регистрация ли? Това не мож да е критерий за нищо. Може би, че съм малко луд, да стоя още тук  :D
Активен

As they say in Mexico, "Dasvidaniya!" Down there, that's two vidaniyas.

ddantgwyn

  • Global Moderator
  • Напреднали
  • *****
  • Публикации: 1262
    • Профил
Re: Bash script
« Отговор #32 -: Apr 02, 2018, 12:49 »
Моята регистрация ли? Това не мож да е критерий за нищо. Може би, че съм малко луд, да стоя още тук  :D

Не, тази на Yasen6275. Вие какво? Проблем с разбирането на писан текст ли имате?

Колкото до лудостта, тези които стоим тук повече от 10 години май трябва да сме доста по-луди от теб.
Активен

the lamer's team honourable member

petar787

  • Напреднали
  • *****
  • Публикации: 15
  • Window Manager: Davidaboth
    • Профил
Re: Bash script
« Отговор #33 -: Apr 02, 2018, 17:26 »
Не става с това изписва ми bad interpreter: No such file or directory
Ето и кода
Код:
#!/bin/bash
echo "1 - Sazdavane na fail."
echo "2- Redaktirane na fail."
echo "3 - Kompilirane na fail"
echo "4 - Izpalnenie na faila."
echo "Vavedete edin ot variantite, dadeni po gore ot menuto:"
read option
case $option in
1)
   echo -n "Vavedete imeto na faila:"
   read filename
   touch $filename   
   echo "Faila e sazdaden!";;                     
2)
   echo -n "Vavedete imeto na faila:"
   read filename2
   if [ -e $filename2 ];
   then
   nano $filename2   
   echo "Faila e redaktiran:";
   else
   echo "Faila ne sashtestvuva!";
   fi;;                                           
3)
   echo -n "Vavedete imeto na faila:"
   read filename3
   if [ -d $filename3 ];
   then
echo "Tova e direktoria!"
   else
if [[ $filename3 == *.sh ]];
then
programname="${filename3%.*}"
gcc -o $programname $filename3 &> "error.log"
else
echo "Faila ne e programa na sh."
fi
fi;;                                                                 
4)
   echo -n "Vavedete imeto na faila:"
   read filename4
   if [[ -x $filename4  &&  $filename4 == *.sh]];
   then
./$filename4
   else
   echo "Faila ne e izpalnim:"
   fi;;                                                             
*)
   echo "Opitaite otnovo!";;                                         
esac

Активен

jet

  • Напреднали
  • *****
  • Публикации: 3473
  • Distribution: debian
  • Window Manager: kde
    • Профил
Re: Bash script
« Отговор #34 -: Apr 02, 2018, 18:09 »
Смени
#!/bin/bash
с
#!/bin/sh
Активен

..⢀⣴⠾⠻⢶⣦⠀
  ⣾⠁⢠⠒⠀⣿⡁
  ⢿⡄⠘⠷⠚⠋
  ⠈⠳⣄⠀⠀⠀⠀  Debian, the universal operating system.

petar787

  • Напреднали
  • *****
  • Публикации: 15
  • Window Manager: Davidaboth
    • Профил
Re: Bash script
« Отговор #35 -: Apr 02, 2018, 18:20 »
не става обаче като махна / и остане само  . $filename стана, но искам да попитам как да го направя изпълним смисъл такъв аз първо трябва да напиша chmod u+x s.sh и след това да пусна другият скрипт за да се изпълни.
Активен

makeme

  • Напреднали
  • *****
  • Публикации: 895
  • Distribution: Many
  • Window Manager: KDE
    • Профил
Re: Bash script
« Отговор #36 -: Apr 02, 2018, 18:59 »
не става обаче като махна / и остане само  . $filename стана, но искам да попитам как да го направя изпълним смисъл такъв аз първо трябва да напиша chmod u+x s.sh и след това да пусна другият скрипт за да се изпълни.

Принципно няма логика в това "само  . $filename ", понеже .файл е съвсем друг файл за линукса (скрит). Но  понеже съм се нагледал на странности, се съгласявам :)
За изпълним файл ти трябва само "chmod +x" и си готов.

ПП: В този ред мисля, че имаш грешка:
if [[ -x $filename4  &&  $filename4 == *.sh]];
след sh трябва да има ентервал. Баша мрънка за тези неща.

ПП2: Сега го тествах това последното и при мен си работи с /:

Код
GeSHi (Bash):
  1. #!/bin/bash
  2.   echo -n "Vavedete imeto na faila:"
  3.   read filename4
  4. echo "ls" > $filename4 #Dobaven red
  5. chmod +x $filename4 #Dobaven red
  6.   if [[ -x $filename4  && $filename4 == *.sh ]] #Dobaven enterval
  7.   then
  8.        ./$filename4
  9.   else
  10.   echo "Faila ne e izpalnim:"
  11.   fi

Изход:
~# chmod +x filetest
~# ./filetest
Vavedete imeto na faila:asd.sh
asd.sh  filetest
~#
« Последна редакция: Apr 02, 2018, 19:24 от makeme »
Активен

Distributions:  UbuntuMate; Kubuntu; CentOS; Kali; Raspberry Pi OS ...

makeme

  • Напреднали
  • *****
  • Публикации: 895
  • Distribution: Many
  • Window Manager: KDE
    • Профил
Re: Bash script
« Отговор #37 -: Apr 02, 2018, 19:30 »
Съжалявам, че толкова послеписи станаха и за това пиша нов пост.

Какво прави това:

Код
GeSHi (Bash):
  1. 3)
  2.   echo -n "Vavedete imeto na faila:"
  3.   read filename3
  4.   if [ -d $filename3 ];
  5.   then
  6. echo "Tova e direktoria!"
  7.   else
  8. if [[ $filename3 == *.sh ]];
  9. then
  10. programname="${filename3%.*}"
  11. gcc -o $programname $filename3 &> "error.log"
  12. else
  13. echo "Faila ne e programa na sh."
  14. fi
  15. fi;;    
         

редове 10 и 11?             
« Последна редакция: Apr 02, 2018, 19:35 от makeme »
Активен

Distributions:  UbuntuMate; Kubuntu; CentOS; Kali; Raspberry Pi OS ...

petar787

  • Напреднали
  • *****
  • Публикации: 15
  • Window Manager: Davidaboth
    • Профил
Re: Bash script
« Отговор #38 -: Apr 02, 2018, 19:56 »
Самата 3 опция компилира програмата и ако има грешки се записва в отделен файл, а не ми ги показва в конзолата и точно тези два реда това правят прави файл в които да се запишат грешките. Поне така мисля че се прави, ако има друг вариант може да кажете и изобщо дали цялата задача е така както е условието. А колкото до това което писа с chmod +x стана прави го изпълним файл обаче с това ./ Не става да не е щото аз ползвам virtualbox с stackware 14.2.
« Последна редакция: Apr 02, 2018, 19:58 от petar787 »
Активен

makeme

  • Напреднали
  • *****
  • Публикации: 895
  • Distribution: Many
  • Window Manager: KDE
    • Профил
Re: Bash script
« Отговор #39 -: Apr 02, 2018, 20:31 »
Пак нещо не мога да схвана.
Проверяваш дали файла е шел скрипт и после го компилираш..?

Шел скриптовете не се компилират. Аз ли изпускам нещо?
Активен

Distributions:  UbuntuMate; Kubuntu; CentOS; Kali; Raspberry Pi OS ...

petar787

  • Напреднали
  • *****
  • Публикации: 15
  • Window Manager: Davidaboth
    • Профил
Re: Bash script
« Отговор #40 -: Apr 02, 2018, 20:33 »
Там трябва да е *.c аз бях правил промени дали ще може с шел скрипт и съм го забравил, но иначе там трябва да е *=с
Активен

makeme

  • Напреднали
  • *****
  • Публикации: 895
  • Distribution: Many
  • Window Manager: KDE
    • Профил
Re: Bash script
« Отговор #41 -: Apr 02, 2018, 20:44 »
Аха, сега ми се поизясниха нещата.

та:
$filename3 - това е некомпилираната версия на "c" програмата
$programname - това е компилираната версия на "c" програмата

От тук отиваме на въпроса: ти на кое даваш chown +x и го стартираш? В опция 4, проверяваш дали файла е изпълним и дали е с разширение .c. Понеже не знам точния случай и ми се струва, че не компилирания файл е с име идващо от $filename3 и ти се опитваш него пак да стартираш. Ако беше случая с баш скрипт е все едно, но при твоя случай са два различни типа файла.
Активен

Distributions:  UbuntuMate; Kubuntu; CentOS; Kali; Raspberry Pi OS ...

petar787

  • Напреднали
  • *****
  • Публикации: 15
  • Window Manager: Davidaboth
    • Профил
Re: Bash script
« Отговор #42 -: Apr 02, 2018, 20:56 »


3)
   echo -n "Vavedete imeto na faila:"
   read filename3
   if [ -d $filename3 ];
   then
   echo "Tova e direktoria!"
   else   
   if [[ $filename3 == *.с ]];
   then
      programname="${filename3%.*}"
      gcc -o $programname $filename3 &> "error.log"
   else
      echo "Faila ne e programa na С."
   fi
fi;;                                                                 
4)
   echo -n "Vavedete imeto na faila:"
   read filename4
   if [[  -x $filename4  &&  $filename4 == *.sh ]];
   then
   ./$filename4
   else
   echo "Faila ne e izpalnim:"
   fi;;                                                             
*)
   echo "Opitaite otnovo!";;                                         
esac

Аз така правя натискам 3 и компилирам някакъв .с проект и ако има грешки ги записва в error.log и после натискам 4 и избирам някакъв друг .sh файл и него пускам. Не трябва ли да е така. Защото ми каза господина, че тези опции не е задължително да е за един файл.
Активен

makeme

  • Напреднали
  • *****
  • Публикации: 895
  • Distribution: Many
  • Window Manager: KDE
    • Профил
Re: Bash script
« Отговор #43 -: Apr 02, 2018, 21:06 »
Точно така. Няма проблем едната опция да е за едно, а другата за друго.

Това...:
Код
GeSHi (Bash):
  1. 4)
  2.   echo -n "Vavedete imeto na faila:"
  3.   read filename4
  4.   if [[  -x $filename4  &&  $filename4 == *.sh ]];
  5.   then
  6.   ./$filename4
  7.   else
  8.   echo "Faila ne e izpalnim:"
  9.   fi;;  


...трябва да работи. Единственото което би го спряло е да не си в директорията, която е .sh файла или преди това да не си му дал да е изпълним (.sh файла който му пишеш името при read командата) .
 
пп: само това ли ти връща ? "bad interpreter: No such file or directory"
« Последна редакция: Apr 02, 2018, 21:13 от makeme »
Активен

Distributions:  UbuntuMate; Kubuntu; CentOS; Kali; Raspberry Pi OS ...

petar787

  • Напреднали
  • *****
  • Публикации: 15
  • Window Manager: Davidaboth
    • Профил
Re: Bash script
« Отговор #44 -: Apr 02, 2018, 21:13 »
не става утре ще го пробвам на  друг комп щото аз мисля че това е от това, че съм със stackware. Не не съм го писал писал на windows даже създавам нов скрипт с едно echo вътре и като го пусна самостоятелно работи, но като го пробвам да го пусна от скрипта ми изписва zad1.sh ./ff.sh bin/bash: bad interpreter: No such file or directory. където zad1.sh ми е скрипта с менюто, а ff.sh ми е скрипта с echo които изкам да ми изведе
« Последна редакция: Apr 02, 2018, 21:18 от petar787 »
Активен

Подобни теми
Заглавие Започната от Отговора Прегледи Последна публикация
BASH - Script
Общ форум
blind_fish 3 3927 Последна публикация Nov 04, 2002, 20:20
от
bash script
Хардуерни и софтуерни проблеми
flame 6 4113 Последна публикация Sep 02, 2004, 12:28
от mimosh
bash script
Общ форум
anger 4 3671 Последна публикация Mar 06, 2005, 20:01
от anger
Помощ за bash script
Хардуерни и софтуерни проблеми
Ivan_storm 4 3611 Последна публикация May 30, 2005, 12:31
от rpetrov
bash script за праверяване на процес
Общ форум
sys7em 8 4157 Последна публикация Aug 09, 2005, 15:39
от