2013-04-15 36 views
7

Tôi mới viết kịch bản Shell và gặp một số khó khăn.Chuyển một mảng từ một tập lệnh Bash sang một số khác

Những gì tôi muốn đạt được

Tôi có một mảng của chuỗi trong scriptOne.sh mà tôi muốn vượt qua để scriptTwo.sh

Những gì tôi đã làm như vậy Viễn

Tôi có thể thực thi kịch bản lệnh thứ hai từ bên trong đầu tiên bằng cách sử dụng ./scriptTwo.sh và tôi đã chuyển các biến chuỗi từ một đến khác bằng cách sử dụng ./scriptTwo.sh $variableOne.

Vấn đề là khi tôi cố chuyển một biến mảng không được chuyển. Tôi đã quản lý để có được nó để vượt qua mục đầu tiên của mảng bằng cách sử dụng ./scriptTwo.sh "${array[@]}" tuy nhiên đây chỉ là một trong các mục và tôi cần tất cả chúng.

Cảm ơn trước sự giúp đỡ của bạn

+0

liên quan: http://stackoverflow.com/questions/31726705/how-to-pass-an-argument-with-space-from-bash-script-to-bash-script –

Trả lời

7

cách của bạn đi qua mảng là đúng

./scriptTwo.sh "${array[@]}" 

Vấn đề có lẽ là theo cách làm thế nào bạn nhận được nó. Trong scriptTwo.sh, sử dụng

array=("[email protected]") 
+0

Nếu tôi chuyển nhiều mảng vào tập lệnh thứ hai này thì sao? Có cách nào để khai báo cái nào là 'arrayOne = (" $ 1 @ ")' etc – StuStirling

+0

@ DiscoS2: Việc truyền nhiều mảng có nhiều vấn đề hơn. Có thể có khả năng thêm kích thước mảng trước mỗi mảng và sau đó điền vào các mảng trong tập lệnh thứ hai. – choroba

+0

Cảm ơn bạn đã trả lời. Tôi quyết định thay đổi cách tôi truyền dữ liệu từ kịch bản này sang tập lệnh khác vì nó làm cho nó dễ dàng hơn trong sai lầm dài nhưng nhờ câu trả lời của bạn. Nó chắc chắn đã giúp! – StuStirling

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