在父 shell (root) 上执行以下命令:
SESSION_RECORD=started
输出:
echo $SESSION_RECORD
started
但是,当我从 shell 脚本检查状态时,该值并未被分配。我知道它创建一个孩子并执行脚本,这就是为什么它不接受变量。
有没有办法可以将其从父 shell 导入到子 shell 中?我不想使用导出,因为根变量是动态的。
参考脚本:
#!/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
如果您将脚本设为函数,那么它在执行时不会创建子 shell,因此访问变量应该可以正常工作。也许这对你有用?
例子:
$ cat test.sh
#!/bin/bash
function foo() {
echo $foo
}
$ source test.sh
$ foo=5
$ foo
5
$ foo=4
$ foo
4
$