Tôi đang cố chạy một tập lệnh và xuất bash đang xuất văn bản khi tôi không muốn vì nó đang phá vỡ đầu ra. Tôi cần chạy một tập lệnh trích xuất một số thông tin rồi chèn nó vào môi trường lệnh tiếp theo, giống như lấy bí mật AWS cho awscli và chuyển chúng vào môi trường aws một cách minh bạch. Tôi nhận được kết quả không nhất quán và tôi không chắc tại sao
$ ./bin/aws-creds mô phỏng
AWS_ACCESS_KEY_ID=mock1234
AWS_SECRET_ACCESS_KEY=mock1234
AWS_CREDS=thành công
$ ddt aws-creds giả
AWS_ACCESS_KEY_ID=mock1234
AWS_SECRET_ACCESS_KEY=mock1234
AWS_CREDS=thành công
Cả hai đều xuất ra như nhau, điều này thật tuyệt, vì vậy hãy thử chạy chúng và sử dụng xuất trên đầu ra
$ xuất $(./bin/aws-creds giả)
$ export $(ddt aws-creds giả)
AWS_ACCESS_KEY_ID=mock1234
AWS_SECRET_ACCESS_KEY=mock1234
AWS_CREDS=thành công
khai báo -x .... một loạt các thứ bổ sung từ môi trường của tôi
Đợi một chút? Cả hai lệnh, khi được đưa vào xuất bằng cách sử dụng lớp con $(...) dường như làm những việc khác nhau và đây là điều tôi muốn khắc phục. Tôi muốn giống như tập lệnh ./bin đầu tiên, không có đầu ra, nhưng tất cả các tham số mới được chèn vào môi trường trình bao. Có vẻ như tập lệnh tôi đã viết 'ddt', không hoạt động theo cách tương tự vì một số lý do.
Ai có thể giải thích tại sao và có thể đề xuất một số cách khắc phục không?