2014-12-16 13 views
5

Mam ten skrypt (między innymi), który generuje moją tapetę po każdym logowaniu/północy. Ma 755 uprawnień. Część kodu:Skrypt bash różne wyniki, gdy doubleclick vs uruchomić w terminalu

#/bin/bash 

convert -size 1440x900 xc:none wall.png 
composite -gravity center ../pics/im256.png wall.png wall.png 
composite -geometry 118x67+661+578 ../pics/im-title-white.png wall.png wall.png 

TIME=`$HOME/bin/time.py | grep "\."` 

if [[ $TIME == *\'* ]] 
then 
    # <...1...> 
else 
    # <...2...> 
fi 

jestem zainteresowany jeśli zmienna $TIME ma ' symbole w nim. Kiedy nie ma symboli ' - wszystko jest w porządku.

Teraz, gdy wiem, że jest co najmniej jeden symbol ' (lub mogę wymusić, aby to zrobić), po dwukrotnym kliknięciu skryptu znajduję się w oświadczeniu else, gdy uruchamiam skrypt w terminalu - znajduję się w oświadczeniu then. Chciałbym zawsze uzyskać oświadczenie then, ale jak?

I przycięte część, która jest zepsuty (lewa - poprawna, prawy - źle):

correct imagewrong picture

+2

Wstawiam się i głosuję, aby zamknąć jednocześnie, ponieważ w rzeczywistości jest to poprawne i kompletne pytanie o pomocnym tytule. Chodzi o to, że problem był bardzo niewielki. Niemniej jednak, jest to miłe przypomnienie, że powłoki i środowiska graficzne naprawdę wywołują skrypty w nieco inny sposób. – quetzalcoatl

Odpowiedz

3

zajęło mi napisać posta, dopóki nie zauważy, że shebang nie jest faktycznie shebang. #!/bin/bash naprawiono problem.

Wygląda na to, że nieprawidłowy programista domyślnie nie spełniał warunku /bin/sh, który był niezdolny do poprawnego działania. Moja powłoka logowania to /bin/bash, co oznacza, że ​​uruchamianie z powłoki nawet bez słowa kluczowego bash np .: ./script.sh domyślnie jest bash, a nie sh. Dlaczego nie mógłbym zrobić tego samego na dwukrotnym kliknięciu ...

+0

Opracuj odpowiedź i zaakceptuj ją, jeśli rozwiązała problem. – rekaszeru

+1

Wypróbowałem: "Możesz zaakceptować własną odpowiedź w ciągu 2 dni" –

+0

Och, masz rację. :) Powinieneś jeszcze dodać jakieś wyjaśnienie do swojej odpowiedzi, wskazując na problem/błąd, aby inni mogli się z niego uczyć. – rekaszeru

Powiązane problemy