bash 变量扩展:${!1}、${1#/} 和导出和排版的使用,没有任何参数

  • 本文关键字:参数 任何 变量 扩展 bash bash
  • 更新时间 :
  • 英文 :


我正在尝试通读 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的参数。

typesetdeclare取代。同样,在没有参数的情况下,它会列出声明的所有内容,但您的示例为命令提供了参数。

${!1}是一个可变的间接寻址。 $1包含将返回其值的变量的名称:

test=x
set -- test
echo ${!1}   # Returns x.

${1#/}从变量$1的开头删除/${1%/}从末尾删除它。

有关详细信息,请参见 man bash 中的参数扩展

相关内容

  • 没有找到相关文章

最新更新