在父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
的值动态变化,因此根据该值,我需要运行一个脚本。
发布于 2020-08-24 11:28:29
导出变量时不需要设置变量的值。你可以:
SESSION_RECORD=started
echo "Now some other stuff"
export SESSION_RECORD && ./myscript
并且它将将SESSION_RECORD
的当前值导出到脚本中。
发布于 2020-08-24 10:59:41
如果您让脚本成为一个函数,那么它在执行时不会创建子while,因此访问变量应该工作得很好。也许这对你有用?
示例:
$ cat test.sh
#!/bin/bash
function foo() {
echo $foo
}
$ source test.sh
$ foo=5
$ foo
5
$ foo=4
$ foo
4
$
https://unix.stackexchange.com/questions/606033
复制相似问题