Tôi có một hàm bash Unix thực hiện một tập lệnh phân tích các biến môi trường tùy chỉnh. Tôi muốn tránh xuất các biến có liên quan trong bash, và thay vào đó đặt chúng chỉ cho kịch bản, như là một phần của lệnh thực thi.Đặt biến môi trường cho tập lệnh trong biến hàm bash cục bộ
Nếu tôi đặt các biến trực tiếp trong lệnh - ví dụ: VARNAME=VARVAL script_name
- nó hoạt động tốt. Tuy nhiên, vì tôi muốn đặt nhiều biến, dựa trên các điều kiện khác nhau, tôi muốn sử dụng một biến chức năng cục bộ để lưu trữ các thiết lập biến môi trường, và sau đó sử dụng biến này trong lệnh thực hiện kịch bản lệnh. Tôi có biến "vars" cục bộ được đặt cuối cùng, ví dụ: thành VARNAME=VAR
, nhưng nếu tôi cố gắng chạy ${vars} script_name
từ hàm bash của mình, tôi nhận được lỗi "không tìm thấy" cho phép gán biến $ vars - tức là, nội dung của $ vars được hiểu là một lệnh thay vì gán biến môi trường.
Tôi đã thử các biến thể khác nhau của cú pháp lệnh, nhưng cho đến nay không có kết quả. Hiện tại tôi phải xuất các biến có liên quan trong hàm, trước khi gọi tập lệnh, và sau đó bỏ đặt/đặt lại chúng thành các giá trị trước đó, nhưng đây không thực sự là giải pháp tôi mong đợi.
Mọi trợ giúp sẽ được đánh giá cao.
Cảm ơn, Sharon
cảm ơn bạn đã trả lời nhanh chóng. Nó đã làm việc :-)! (Tôi thực sự đã thử sử dụng eval tại một số điểm, nhưng tôi vô tình sử dụng cú pháp sai.) – Sharon
['eval' là ác] (http://mywiki.wooledge.org/BashFAQ/048) – l0b0