是否有更一致的方式来声明Bash变量和函数?
我一直在决定如何在
Bash中声明变量或函数.
鉴于以下假设: > Bash是唯一可用的脚本语言. 在全局变量的情况下,我应该使用: > foo = bar – 函数内部和外部? 在局部变量的情况下,我应该使用: >本地foo =吧 在只读变量的情况下,我应该使用: > declare -r foo = bar 在函数的情况下,我应该使用: > 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; }. 如注释所示,您可以混合和匹配各种变量标志,例如var -g foo = bar表示全局(-g)变量(var)或val -Ai foobar =([foo] = 0 [bar] = 1)对于只读(val),关联数组(-A)由整数(-i)值组成. 这种方法也带有隐式变量范围.此外,任何使用JavaScript,Java,Scala等语言编程的软件工程师都应熟悉新引入的关键字def,val,var和final. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |