假设我有这样的脚本:
export.bash:
#! /usr/bin/env bash
export VAR="HELLO, VARIABLE"
当我执行脚本并试图访问$VAR时,我没有得到任何值!
echo $VAR
是否有一种方法通过执行export来访问$VAR。没有来源的Bash ?
假设我有这样的脚本:
export.bash:
#! /usr/bin/env bash
export VAR="HELLO, VARIABLE"
当我执行脚本并试图访问$VAR时,我没有得到任何值!
echo $VAR
是否有一种方法通过执行export来访问$VAR。没有来源的Bash ?
当前回答
简单幼稚的方法有效:
脚本1:
回显"something" > /tmp/myvar
脚本2:
myvar=$(cat /tmp/myvar)
其他回答
另一种变通方法(取决于具体情况)可能很有用:创建另一个继承导出变量的bash脚本。这是Keith Thompson回答的一个特例,所有这些缺点。
文件export.bash:
# !/bin/bash
export VAR="HELLO, VARIABLE"
bash
Now:
./export.bash
echo $VAR
执行
set -o allexport
在此之后,您从文件中获取的任何变量都将在您的shell中导出。
source conf-file
当你完成时执行。这将禁用alleexport模式。
set +o allexport
也许你可以在~/中添加一个函数。ZSHRC或~/.bashrc。
# set my env
[ -s ~/.env ] && export MYENV=`cat ~/.env`
function myenv() { [[ -s ~/.env ]] && echo $argv > ~/.env && export MYENV=$argv }
由于使用了外部变量,可以避免使用脚本文件。
答案是否定的,但对我来说,我做了以下事情
脚本:
myExport
#! \bin\bash
export $1
我的.bashrc文件中的别名:
alias myExport='source myExport'
你仍然可以获取它,但也许这样它更有用,对其他人来说也更有趣。
如果你想为调用shell设置一个变量,有一个使用c unix套接字的健壮方法。 测试结果如下:
$ ./a.out &
[1] 5363
$ ./b.out 123;a=`./b.out`;echo ${a}
123
[1]+ Done ./a.out
参见我的github上的a.c, b.c和a.h。