我有一个包含一些需要设置为环境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脚本
变量和环境变量是有区别的。 如果你执行. 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] 举报,一经查实,本站将立刻删除。