【发布时间】:2021-10-16 14:21:00
【问题描述】:
我将dash 用作/bin/sh。
我的脚本接受任意数量的参数,我需要处理它们,一个变量只包含最后一个参数,另一个变量包含除最后一个参数之外的所有内容。
我知道如何在zsh 中执行此操作,但不幸的是这与dash 不兼容:
last="${@[-1]}"
rest=( ${@[1,-2]} )
如何在/bin/sh 中实现这一点?
【问题讨论】:
-
dash 不支持数组。
-
@400theCat : dash 和 sh 都没有数组。从技术上讲,它们确实有一个(未命名的)数组,您可以使用
set命令设置它,但是您没有此纸牌“数组”的数组切片,使用起来很痛苦。我的建议是,如果你不能坚持使用zsh,你可以从头开始重写整个脚本,而不用过多关注原始的实现。要考虑的另一种选择是切换到更灵活的语言,例如 Perl。
标签: shell command-line sh zsh