2012-01-21 28 views
23

Tôi mới sử dụng Linux và tôi đã dành vài ngày qua làm rối tung xung đột với Shell Scripts. Tôi quyết định bắt đầu đơn giản. Tôi đang làm một chương trình "Quản gia" cung cấp phần nào giao diện người dùng cho thiết bị đầu cuối khi tôi mở nó. Thực sự chỉ để thử nghiệm mọi thứ.Shell Scripting: Sử dụng một biến để xác định đường dẫn

Dù sao, vấn đề của tôi nằm ở sự nhầm lẫn của tôi với các Biến vỏ. Theo hiểu biết của tôi, các biến cho phép tôi lưu trữ một giá trị (String trong trường hợp này) và để gọi nó sau này trong mã của tôi.

Vì vậy, nếu tôi muốn có một biến chứa đường dẫn dài đến một số tập lệnh, tôi có thể lý tưởng lưu trữ nó không?

Đây là những gì tôi muốn nói:

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

//Later on in that script// 

cd $SPTH 
./script1 

Những gì tôi đang cố gắng để làm, với lẽ là cú pháp sai, là để thiết lập đường dẫn đến SPTH.Later biến trên tôi chúng ta "cd" và tôi đặt đối số là $ SPTH. Lý tưởng nhất điều này sẽ cho phép tôi sau đó chạy các tập tin mà không cần gõ vào đường dẫn.

Tuy nhiên, cách này không hiệu quả. Nó chỉ bỏ qua "$ SPTH" và xử lý lệnh dưới dạng "cd" một mình.

Vì vậy, tôi đang làm gì sai? Và điều gì sẽ là một cách để làm điều này?

+5

Nếu tôi nhớ không lầm thì bạn không sử dụng không gian xung quanh "= ". –

Trả lời

63

Không sử dụng không gian ...

(sai)

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

(đúng)

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

Cảm ơn bạn rất nhiều! Bây giờ làm việc như một say mê, tôi sẽ phải nhớ điều này. – Nonameghost

+4

điều gì sẽ xảy ra nếu có một khoảng trống trong đường dẫn – Eatdoku

+7

@Eatdoku khi sử dụng 'SPTH' trong tập lệnh của bạn và giá trị của nó có một khoảng trắng, sau đó bao quanh biến đó với dấu ngoặc kép. Ví dụ. 'cd" $ SPTH "' –

Các vấn đề liên quan