我正在尝试通过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 ]]
问:无法理解这两个变量扩展。
感谢您的帮助!
答案 0 :(得分:3)
export
列出了所有导出的变量及其定义。请注意,您的行包含export
的许多参数。
typeset
已被declare
取代。同样,没有参数,它列出了声明的所有内容,但是您的示例给出了命令的参数。
${!1}
是一个变量间接。 $1
包含将返回其值的变量的名称:
test=x
set -- test
echo ${!1} # Returns x.
${1#/}
从变量/
的开头删除$1
,${1%/}
将其从结尾删除。
有关详细信息,请参阅man bash
中的参数扩展。