2012-01-21 22 views
23

Jestem nowicjuszem w Linuksie, a ja spędziłem kilka dni na pracy ze Skrypty Shell. Postanowiłem zacząć prosto. Robię program "Butler", który zapewnia trochę interfejsu dla terminalu, kiedy go otworzę. Naprawdę, żeby przetestować różne rzeczy.Skrypty powłoki: Używanie zmiennej do definiowania ścieżki

W każdym razie mój problem polega na moim pomyleniu ze zmiennymi powłoki. Według mnie zmienne pozwalają mi przechowywać wartość (w tym przypadku String) i wywołać ją później w moim kodzie.

Więc jeśli chciałem mieć zmienną, która przechowuje długą ścieżkę do niektórych zestawów skryptów, najlepiej byłoby zapisać to nie?

Oto co mam na myśli:

SPTH = '/home/Foo/Documents/Programs/ShellScripts/Butler' 

//Later on in that script// 

cd $SPTH 
./script1 

Co staram się zrobić, z prawdopodobnie niewłaściwej składni, to ustawić ścieżkę do zmiennej SPTH.Later na I nas "cd" i ustawić argument jako $ SPTH. W idealnej sytuacji pozwoliłoby to na uruchomienie pliku bez wpisywania ścieżki.

To jednak nie działa. Po prostu ignoruje "$ SPTH" i traktuje to polecenie jako "cd".

Co więc robię źle? I jaki byłby sposób na zrobienie tego?

+5

Jeśli dobrze pamiętam, nie należy używać spacji otaczających „= ". –

Odpowiedz

63

Nie używaj spacji ...

(Nieprawidłowy)

SPTH = '/home/Foo/Documents/Programs/ShellScripts/Butler' 

(Correct)

SPTH='/home/Foo/Documents/Programs/ShellScripts/Butler' 
+0

Dziękuję bardzo! Teraz działa jak urok, muszę o tym pamiętać. – Nonameghost

+4

co zrobić, jeśli na ścieżce znajduje się spacja – Eatdoku

+7

@Eaddoku, gdy w skrypcie używasz słowa "SPTH", a jego wartość ma spację, a następnie otaczaj zmienną podwójnymi cudzysłowami. Na przykład. 'cd" $ SPTH "' –

Powiązane problemy