ฉันกำลังพยายามเรียกใช้สคริปต์และ bash export กำลังส่งข้อความเมื่อฉันไม่ต้องการเพราะมันทำลายเอาต์พุต ฉันต้องเรียกใช้สคริปต์ที่แยกข้อมูลบางอย่างแล้วแทรกลงในสภาพแวดล้อมคำสั่งถัดไป เช่น การรับความลับ AWS สำหรับ awscli และส่งผ่านไปยังสภาพแวดล้อม aws อย่างโปร่งใส ฉันได้รับผลลัพธ์ที่ไม่สอดคล้องกันและฉันก็ไม่แน่ใจว่าทำไม
$ ./bin/aws-creds จำลอง
AWS_ACCESS_KEY_ID=mock1234
AWS_SECRET_ACCESS_KEY=mock1234
AWS_CREDS=สำเร็จ
$ ddt aws-creds จำลอง
AWS_ACCESS_KEY_ID=mock1234
AWS_SECRET_ACCESS_KEY=mock1234
AWS_CREDS=สำเร็จ
เอาต์พุตทั้งสองเท่ากัน ซึ่งดีมาก ลองเรียกใช้และใช้การส่งออกกับเอาต์พุต
$ ส่งออก $(./bin/aws-creds จำลอง)
$ ส่งออก $ (จำลอง ddt aws-creds)
AWS_ACCESS_KEY_ID=mock1234
AWS_SECRET_ACCESS_KEY=mock1234
AWS_CREDS=สำเร็จ
ประกาศ -x .... สิ่งพิเศษมากมายจากสภาพแวดล้อมของฉัน
รอสักครู่? คำสั่งทั้งสองเมื่อส่งออกโดยใช้ subshell $(...) ดูเหมือนจะทำสิ่งต่าง ๆ และนี่คือสิ่งที่ฉันต้องการแก้ไข ฉันต้องการสคริปต์ ./bin ตัวแรก ไม่มีเอาต์พุต แต่พารามิเตอร์ใหม่ทั้งหมดถูกแทรกลงในสภาพแวดล้อมของเชลล์ ดูเหมือนว่าสคริปต์ที่ฉันเขียน 'ddt' ไม่ทำงานในลักษณะเดียวกันด้วยเหตุผลบางประการ
ใครช่วยอธิบายสาเหตุและอาจแนะนำวิธีแก้ไขได้บ้าง