상위 셸(루트)에서 다음 명령을 실행합니다.
SESSION_RECORD=started
산출:
echo $SESSION_RECORD
started
그런데 쉘 스크립트에서 상태를 확인해 보니 값이 할당되어 있지 않습니다. 나는 그것이 자식을 생성하고 스크립트를 실행한다는 것을 알고 있습니다. 그래서 변수를 허용하지 않습니다.
이것을 상위 쉘에서 하위 쉘로 가져올 수 있는 방법이 있습니까? 루트 변수가 동적이기 때문에 내보내기를 사용하고 싶지 않습니다.
참조 스크립트:
#!/bin/bash
session=`echo $SESSION_RECORD`
echo $session
if [ "$session" == "started" ]
then
echo "screen records"
else
echo "screen not started"
fi
기본적으로 내 스크립트는 변수의 값을 확인하고 일치하는 경우 루프를 입력하고 명령을 추가로 실행해야 합니다.
변수 값은 SESSION_RECORD
동적으로 변경되므로 해당 값을 기반으로 스크립트를 실행해야 합니다.
답변1
내보낼 때 변수 값을 설정할 필요가 없습니다. 넌 할 수있어:
SESSION_RECORD=started
echo "Now some other stuff"
export SESSION_RECORD && ./myscript
SESSION_RECORD
현재 값을 스크립트로 내보냅니다 .
답변2
스크립트를 함수로 만들면 실행 시 하위 쉘이 생성되지 않으므로 변수에 액세스하는 것이 제대로 작동합니다. 어쩌면 이것이 당신에게 효과가 있을까요?
예:
$ cat test.sh
#!/bin/bash
function foo() {
echo $foo
}
$ source test.sh
$ foo=5
$ foo
5
$ foo=4
$ foo
4
$