使用`sh -cx`导出脚本变量

时间:2014-02-20 06:18:52

标签: linux bash shell sh

我正在尝试以下列方式从脚本中导出变量:

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>"风格。我执行的任何脚本都将放在引号,文件和/或命令中。没有办法解决这个问题。

我问的是甚至可能吗?如果是这样,怎么样?

谢谢!

1 个答案:

答案 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