我正在尝试通读 bash 脚本以在 https://github.com/wayneeseguin/rvm/blob/master/binscripts/rvm-installer 上安装 rvm,但我很难理解以下几行。
line 22: export rvm_trace_flag rvm_debug_flag rvm_user_install_flag rvm_ignore_rvmrc rvm_prefix rvm_path
问:导出在没有任何参数的情况下做什么?
line 241: typeset _account _domain _pattern _repo _sources _values _version
问:排版在没有任何参数的情况下做什么?
line 242: _sources=(${!1})
问:不确定如何解释这种变量扩展。我已经检查了 bash 参考 (http://www.gnu.org/software/bash/manual/bashref.html#Arrays),仍然不太明白。
line 510: branch=${1#/}
line 514: if [[ "${1%/}" -ne wayneeseguin ]] && [[ "${1%/}" -ne mpapis ]]
问:也无法理解这两个变量扩展。
感谢您的任何帮助!
export
没有任何参数列出所有导出的变量及其定义。请注意,您的行包含许多要export
的参数。
typeset
被declare
取代。同样,在没有参数的情况下,它会列出声明的所有内容,但您的示例为命令提供了参数。
${!1}
是一个可变的间接寻址。 $1
包含将返回其值的变量的名称:
test=x
set -- test
echo ${!1} # Returns x.
${1#/}
从变量$1
的开头删除/
,${1%/}
从末尾删除它。
有关详细信息,请参见 man bash
中的参数扩展。