Truyền biến từ shell cha sang shell con thông qua shell script
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
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.
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 $