我正在尝试以下列方式从脚本中导出变量:
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>"
风格。我执行的任何脚本都将放在引号,文件和/或命令中。没有办法解决这个问题。
我问的是甚至可能吗?如果是这样,怎么样?
谢谢!
答案 0 :(得分:0)
您不能通过shell脚本进行导出,因为shell脚本在子shell进程中运行,并且只有子shell的子进程才会继承导出。
使用source的原因是让当前shell执行命令
将导出命令放在诸如.bashrc
之类的文件中是很常见的,bash将在启动时获取该文件(或其他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