2011-09-01 30 views
6

Đang cố gắng để chạy một kịch bản đơn giản gắn liền với dự án xcode của tôi như sau ...

if [ -d '$HOME/data' ]; 
then 
    cd "$HOME/data/" 
    rsync -t *.plist '$SRCROOT/data/' 
fi 

exit 0 

Các kịch bản có vẻ chạy tốt nếu tôi chạy nó bên ngoài của XCode nhưng khi chạy từ XCode, tôi nhận được lỗi sau ...

line 2: SRCROOT: command not found 

Có vẻ biến SRCROOT không thể phát hiện được trong kịch bản nhưng tôi hiểu rằng đây là một trong các biến môi trường cần được chuyển và có thể truy cập vào tập lệnh. Bất cứ suy nghĩ nào?

Trả lời

10

Hóa ra đây là lỗi của tôi. Các kịch bản đã thực sự không được gọi là ở tất cả. Trong XCode tôi đã đề cập đến đường dẫn của kịch bản sử dụng ...

"./$(SRCROOT)/myScript.sh" 

Switching nó để ...

"$SRCROOT/myScript.sh" 

Sửa chữa các vấn đề và thực sự tôi có thể truy cập $ SRCROOT từ kịch bản của tôi bây giờ.

+0

điều này có nghĩa là nếu bạn chạy tập lệnh shell từ NStask, bạn có thể truy cập các biến như $ PROJECT_FILE_PATH, v.v ... từ các tập lệnh shell của bạn trên máy của ứng dụng được triển khai? nó sẽ là tuyệt vời để sử dụng các biến bó tài nguyên trong bash! –

+0

Điều đó nghe có vẻ khá thú vị. Thật không may tôi chưa bao giờ thử một cái gì đó như thế. –

+0

Tôi đã nhấn vấn đề tương tự này. Khi bạn thêm "tệp đầu vào", ngay bên dưới vùng văn bản lệnh Run Script, tên đường dẫn mặc định là '$ (SRCROOT)/myfile'. Nhưng mỗi câu trả lời này bạn nên sử dụng '$ SRCROOT'. +1 – pkamb

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