Truyền biến từ shell cha sang shell con thông qua shell script

Aug 24 2020

Trên shell cha (root) thực hiện như sau:

SESSION_RECORD=started

Đầu ra :

echo $SESSION_RECORD
started

Tuy nhiên, khi tôi kiểm tra trạng thái từ một tập lệnh shell, giá trị không được gán. Tôi biết nó tạo ra một con và thực thi tập lệnh, đó là lý do tại sao nó không sử dụng biến.

Có cách nào tôi có thể nhập dữ liệu đó từ shell cha sang shell con không? Tôi không muốn sử dụng xuất vì biến gốc là động.

script cho ref:

#!/bin/bash

session=`echo $SESSION_RECORD`
echo $session if [ "$session" == "started" ]
then
echo "screen records"
else
echo "screen not started"
fi

Về cơ bản, tập lệnh của tôi nên kiểm tra giá trị của biến và nếu nó khớp, nó sẽ đi vào vòng lặp và thực hiện các lệnh thêm.

Giá trị của biến SESSION_RECORDthay đổi động, vì vậy dựa trên giá trị, tôi cần chạy một tập lệnh.

Trả lời

2 seumasmac Aug 24 2020 at 18:28

Bạn không cần đặt giá trị của một biến khi xuất nó. Bạn có thể làm:

SESSION_RECORD=started
echo "Now some other stuff"
export SESSION_RECORD && ./myscript

và nó sẽ xuất giá trị hiện tại SESSION_RECORDsang tập lệnh của bạn.

Invidian Aug 24 2020 at 17:59

Nếu bạn đặt tập lệnh của mình thành một hàm, thì nó sẽ không tạo ra một vỏ con trong khi thực thi, vì vậy việc truy cập biến sẽ hoạt động tốt. Có lẽ điều đó sẽ làm việc cho bạn?

Thí dụ:

$ cat test.sh #!/bin/bash function foo() { echo $foo
}
$ source test.sh $ foo=5
$ foo 5 $ foo=4
$ foo 4 $