微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

导出另一个文件中定义的variables

我有一个包含一些需要设置为环境variables的variables的脚本

variables列表不断变化,并在我的末尾修改它不是一个选项。 任何想法我会怎么去做呢?

示例文件foo.sh

FOO="FOOFOO" BAR="BARBAR"

Bash和Linux shell是一样的吗?

隐藏/encryptionbash文件中的密码以防止意外看到它

wget或类似的程序总是在POSIX系统上可用?

通过SSH将variables传递给远程脚本

“start-stop-daemon:无法统计

我如何redirect从Debian上的start-stop-daemon启动的进程的进程输出

杀死一个10分钟的僵尸进程在Linux bash脚本

列出目录中的数字文件名称

删除string直到某个字符的第一个出现

根据内容将input分成多个输出

变量和环境变量是有区别的。 如果你执行. foo.sh . foo.sh和foo.sh包含行FOO=value ,那么将在当前进程中分配变量FOO 。 这不是一个环境变量。 要成为一个环境变量(因此可以被子shell使用),它必须被导出。 但是,shell提供了一个选项,使得所有的变量赋值都将变量提升为一个环境变量,所以如果你只是简单地做:

set -a . foo.sh set +a

那么foo.sh中的所有变量赋值都将成为当前进程中的环境变量。 请注意,这不是严格意义上的:在bash中,导出变量使其成为当前shell中的环境变量,但在其他shell(例如破折号)中,导出该变量并不会使其成为当前shell中的环境变量。 (但它确实使它被设置在子壳的环境中。)

你在找'。'吗? 命令(在bash也拼写为“source”):

source foo.sh

由于您需要将它们导出到环境中,因此您可能需要做一些额外的工作:

while read -r line; do export "$line" done < foo.sh

如果您只想输出带有通用前缀的变量,例如:

BAZ_FOO="FOOFOO" BAZ_BAR="BARBAR"

你可以简单地这样做:

. foo.sh variable_list=() variable_list=( $(set -o posix ; set | grep "BAZ_" | cut -d= -f1) ) for variable in "${variable_list[@]}" do export "$variable" done

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐