从命令行使用 args 切片数组 - bash

Mot*_*art 4 bash

尝试在从命令提示符处获取 args 作为数组项的同时对数组进行切片。问题是切片的位置参数不像我预期的那样工作。如何从提示中获取参数切片数组?

./arrays.bash awesome cool strong cute awesome

我想要

  arr=$@ 
  echo ${arr[*]:0:2} #awesome cool
Run Code Online (Sandbox Code Playgroud)

我得到

  arr=$@ 
  echo ${arr[*]:0:2} # aw
Run Code Online (Sandbox Code Playgroud)

我读了这篇文章:How to slice an array in bash 但我相信我的问题是不同的。似乎这里的困难在于,因为我是从命令提示符获取数组值,或者不是,idk。当数组作为变量包含在脚本中时,它确实按预期运行。这是来自learnyoubash,因此仅调整索引以删除字符而不是整个值,这确实返回正确答案,并不是解决问题的有效方法。我的解决方案不正确但有效的解决方案https://github.com/nodeschool/discussions/issues/2241

Joh*_*ica 6

要存储$@在数组中,您必须编写:

arr=("$@")
Run Code Online (Sandbox Code Playgroud)

没有括号$arr只是一个字符串。