2009-05-02 36 views
9

Trong dòng lệnh bash, tôi đặt biến myPath =/home/user/dir. Tôi tạo ra một kịch bản mà tôi đặt echo $ myPath nhưng nó dường như không hoạt động. Nó không có gì vang lên. Tôi có thể làm gì để truy cập biến myPath trong tập lệnh. Nếu tôi viết echo $ myPath trong lệnh, nó hoạt động, nhưng không phải trong kịch bản lệnh.Truy cập biến trong tập lệnh bash

Trả lời

8

Hãy thử

export myPath=/home/user/dir 
+1

sử dụng xuất var cũng trong tiểu sử bash của bạn - nếu bạn muốn tập lệnh của mình truy cập vào biến này. ví dụ JAVA_HOME – LukeSolar

+0

Điều này gây hiểu lầm. 'Xuất khẩu' không có hiệu lực hiển thị trên trình bao hiện tại. Nó rất hữu ích khi giá trị của biến cần được hiển thị cho các tiến trình con được bắt đầu từ trình bao hiện tại. – tripleee

+0

@tripleee Thật vậy, và trừ khi tôi đang thiếu một cái gì đó, đó là chính xác những gì các câu hỏi được hỏi về: làm thế nào để truy cập vào một biến từ một subprocess (được thực hiện một kịch bản shell). –

18

làm thế nào bạn gán biến? nó cần phải có được:

$ export myPath="/home/user/dir" 

sau đó bên trong một chương trình shell như:

#!/usr/bin/env bash 
echo $myPath 

bạn sẽ nhận được kết quả mong muốn.

+1

Nếu bạn cần sử dụng điều này bên trong một chuỗi được trích dẫn khác, bạn cũng có thể làm echo "Đường dẫn là $ {myPath}" –

5

Bạn cũng có thể làm điều này để đặt biến myPath chỉ cho myscript

myPath="whatever" ./myscript 

Để biết chi tiết về cú pháp phức tạp thừa nhận cho các biến môi trường xem: http://www.pixelbeat.org/docs/env.html

1

Bạn phải khai báo giao biến của bạn với " xuất khẩu "như vậy:

export myPath="/home/user/dir" 

Điều này sẽ làm cho vỏ bao gồm biến trong enviro nment của subprocesses nó khởi chạy. Theo mặc định, các biến mà bạn khai báo (không có "xuất khẩu") không được chuyển cho một tiến trình con. Đó là lý do tại sao ban đầu bạn không nhận được kết quả mong đợi.

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