我经常需要弹出bash函数或脚本的最后一个位置参数。
“ pop”的意思是:“将其从位置参数列表中删除,然后(可选)将其分配给变量。”
鉴于我需要执行此操作的频率,我对发现的最佳效果感到惊讶,以下示例说明了这一点:
foo () {
local argv=( "$@" )
local last=${argv[$(( ${#argv[@]} - 1 ))]}
argv=( ${argv[@]:0:$(( ${#argv[@]} - 1 ))} )
echo "last: $last"
echo "rest: ${argv[@]}"
}
换句话说,一部史诗般的作品具有成千上万的演员阵容...
有没有更简单,更容易阅读的东西?
您可以使用${argv[-1]}
(bash 4.2或更高版本)访问最后一个元素,并使用unset
内置(bash 4.3或更高版本)将其从数组中删除:
last=${argv[-1]}
unset 'argv[-1]'
该引号argv[-1]
是必需的作为[...]
是水珠操作,所以argv[-1]
不带引号可能会扩大到argv-
和/或argv1
如果这些文件在当前目录中存在(或不存在或原因的错误,如果与他们没有nullglob
/failglob
启用)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句