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

bash 中的访问修饰符

如何解决bash 中的访问修饰符

假设我有一个 bash 脚本,我希望一些变量在获取时出现,而其他变量只能从脚本内部访问(函数和变量)。实现这一目标的惯例是什么?

解决方法

假设 test.sh 是您的 bash 脚本。

您可以做的是提取所有常见项目并将它们放入 common.sh 中,其他脚本可以获取这些内容。

,

BASH_SOURCE 数组可以帮助您:

考虑这个脚本,source.sh

#!/bin/bash
if [[ ${BASH_SOURCE[0]} == "$0" ]]; then
    # this code is run when the script is _executed_
    foo=bar

    privFunc() { echo "running as a script"; }

    main() {
        privFunc
        publicFunc
    }
fi

# this code is run when script is executed or sourced
answer=42
publicFunc() { echo "Hello,world!"; }

echo "$0 - ${BASH_SOURCE[0]}"

[[ ${BASH_SOURCE[0]} == "$0" ]] && main

运行:

$ bash source.sh
source.sh - source.sh
running as a script
Hello,world!

采购:

$ source source.sh
bash - source.sh
$ declare -p answer
declare -- answer="42"
$ declare -p foo
bash: declare: foo: not found
$ publicFunc
Hello,world!
$ privFunc
bash: privFunc: command not found
$ main
bash: main: command not found

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