我正在尝试通过以下方式从脚本中导出变量:
sh -xc "<script here>"
但根本无法让它工作。我尝试了几种技术,例如:
sh -xc "./xxx.sh"
(从文件本身导出变量 yyy)
sh -xc "./xxx.sh && export yyy=1"
(xxx.sh 出口0)
sh -xc ". ./xxx.sh"
以及上述的几种排列,但其中任何一个都没有骰子。
不幸的是,我必须符合sh -xc "<script here>"
风格。我执行的任何脚本都将放置在报价、文件和/或命令中。这是没有办法的。
我问的可能吗?如果是这样,如何?
谢谢!
因为 shell 脚本在子 shell 进程中运行,并且只有子 shell 的子进程才会继承导出。
使用源代码的原因是让当前 shell 执行命令
将导出命令放在一个文件中是很常见的,例如 bash 将在启动时获取的.bashrc
(或其他 shell 的类似文件)
但您可以执行以下操作:
shell$ cat > script.sh
#!/bin/sh
echo export myTest=success
chmod u+x script.sh
然后让当前 shell 执行该输出
shell$ `./script.sh`
shell$ echo $myTest
success
shell$ /bin/sh
$ echo $myTest
success