加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

是否有更一致的方式来声明Bash变量和函数?

发布时间:2020-12-15 20:57:06 所属栏目:安全 来源:网络整理
导读:我一直在决定如何在 Bash中声明变量或函数. 鉴于以下假设: Bash是唯一可用的脚本语言. 命名约定无关紧要. 在全局变量的情况下,我应该使用: foo = bar – 函数内部和外部? declare -g foo = bar – 函数内部和外部? local -g foo = bar – 函数内部? 在
我一直在决定如何在 Bash中声明变量或函数.

鉴于以下假设:

> Bash是唯一可用的脚本语言.
>命名约定无关紧要.

在全局变量的情况下,我应该使用:

> foo = bar – 函数内部和外部?
> declare -g foo = bar – 函数内部和外部?
> local -g foo = bar – 函数内部?

在局部变量的情况下,我应该使用:

>本地foo =吧
>声明foo = bar

在只读变量的情况下,我应该使用:

> declare -r foo = bar
> local -r foo = bar
> readonly foo – 在下一行没有-r标志的[1.]或[2.]之后.

在函数的情况下,我应该使用:

> foo(){echo bar; }
> foo {echo bar; }
> function foo(){echo bar; }
> function foo {echo bar; }

解决方法

为了忘记它,我在.bashrc顶部附近以及每个Bash shell脚本文件中定义了以下内容:

# Allow to define an alias.
#
shopt -s expand_aliases

# Defines a function given a name,empty parentheses and a block of commands enclosed in braces.
#
# @param name the name of the function.
# @param parentheses the empty parentheses. (optional)
# @param commands the block of commands enclosed in braces.
# @return 0 on success,n != 0 on failure.
#
alias def=function

# Defines a value,i.e. read-only variable,given options,a name and an assignment of the form =value.
#
# Viable options:
#   * -i - defines an integer value.
#   * -a - defines an array value with integers as keys.
#   * -A - defines an array value with strings as keys.
#
# @param options the options. (optional)
# @param name the name of the value.
# @param assignment the equals sign followed by the value.
# @return 0 on success,n != 0 on failure.
#
alias val="declare -r"

# Defines a variable given options,a name and an assignment of the form =value.
#
# Viable options:
#   * -i - defines an integer variable.
#   * -a - defines an array variable with integers as keys.
#   * -A - defines an array variable with strings as keys.
#
# @param options the options. (optional)
# @param name the name of the variable.
# @param assignment the equals sign followed by the value. (optional)
# @return 0 on success,n != 0 on failure.
#
alias var=declare

# Declares a function as final,i.e. read-only,given a name.
#
# @param name the name of the function.
# @return 0 on success,n != 0 on failure.
#
alias final="readonly -f"

以上定义允许我举例说:

> def foo {echo bar; }.
>最终的foo
> var foo = bar
> val foo = bar

如注释所示,您可以混合和匹配各种变量标志,例如var -g foo = bar表示全局(-g)变量(var)或val -Ai foobar =([foo] = 0 [bar] = 1)对于只读(val),关联数组(-A)由整数(-i)值组成.

这种方法也带有隐式变量范围.此外,任何使用JavaScript,Java,Scala等语言编程的软件工程师都应熟悉新引入的关键字def,val,var和final.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读