Questions tagged «array»

数组是用于在连续存储器中存储项目的最简单的数据结构

5
有没有办法用bash读取数组的最后一个元素?
如果我有一个包含5个元素的数组,例如: [a][b][c][d][e] 使用echo ${myarray[4]}我可以看到它的含义。 但是,如果我不知道给定数组中元素的数量怎么办?有没有办法读取未知长度数组的最后一个元素?即第一个元素从右到左读取任何数组? 我想知道如何用bash做到这一点。
68 bash  array 

2
如何计算bash中定义的数组的长度?
我是bash的新手,找不到很好的教程来回答我的问题。 array=( item1 item2 item3) for name in ${array[@]}; do echo current/total ... some other codes done 我想计算“当前”和“总计”值,因为它的预期输出为: 1/3 2/3 3/3 谢谢你的提示
57 bash  array 

4
如何从数组中完全删除元素?
unset array[0]删除元素,但是如果我仍然echo ${array[0]}得到null值,还有其他方法可以执行此操作,但是如果数组的元素包含如下所示的空格 array[0]='james young' array[1]='mary' array[2]='randy orton' 但是这些也做不到 array=${array[@]:1} #removed the 1st element 现在我希望新数组像 array[0]='mary' array[1]='randy orton' 分配后,空格会引起麻烦,实际数组变得像替换一样。 array=(mary randy orton)


3
将数组转换为命令的参数?
我有一个命令的“选项”数组。 my_array=(option1 option2 option3) 我想使用数组中的值作为选项在bash脚本中调用此命令。因此,command $(some magic here with my_array) "$1"变为: command -option1 -option2 -option3 "$1" 我该怎么做?可能吗?
39 bash  parameter  array 

3
创建数组时出现语法错误:“(”意外)
我有两个(Debian)Linux服务器。我正在创建一个shell脚本。 在第一个数组上,我这样创建了一个数组: #!/bin/bash target_array=( "/home/user/direct/filename -p123 -r" ) 很好 但是,当我在另一台服务器上运行时,我得到: Syntax error: "(" unexpected 据我所知,两台服务器是相同的。谁能阐明为什么这行不通? 如果我直接将其输入终端,那很好吗? 看起来当我以 sh scriptname.sh 我得到了错误,但是如果我以 ./scriptname.sh 看来还可以。有什么不同?

2
是否有理由将Zsh数组的第一个元素索引为1而不是0?
根据我对现代编程和脚本语言的经验,我相信大多数程序员通常习惯于将0数组的第一个元素称为索引。 使用1有什么实质性的优势? 我敢肯定,除了Zsh之外,我还听说过更多其他与数组类似的语言;我也很好,因为它同样方便。 但是,由于以前发行和广泛使用的shell脚本语言(例如ksh和bash都使用0), 为什么有人会选择更改此通用“标准”? 我对我的问题的立即回答是“当然不是”。 那么,我能想到的关于外壳的这种“专有功能”的唯一解释是“ 他们只是这样做是为了炫耀更多酷的外壳 ”。 我对Zsh或它的历史一无所知,而我对此琐碎的理论很有可能没有任何意义。 对此有解释吗?还是只是出于个人品味?
27 zsh  history  array 

4
Unix Bourne Shell中的数组
我正在尝试在Bourne shell(/bin/sh)中使用数组。我发现初始化数组元素的方法是: arr=(1 2 3) 但是它遇到了一个错误: syntax error at line 8: `arr=' unexpected 现在我发现该语法的帖子说的是for bash,但是我找不到Bourne shell的任何单独语法。语法/bin/sh也一样吗?


3
Bash中可能的错误?:foo(){echo“ $ {var [0]}”; }; var =(bar baz)foo
作业系统:Ubuntu 16.04.3 外壳:Bash 4.3.48 我知道可以像中那样临时更改变量的内容var=value command,这可能IFS= read -r var是最值得注意的情况。 而且,感谢Greg的Wiki,我也了解: # Why this foo() { echo "$var"; } var=value foo # And this does work var=value; echo "$var" # But this doesn't var=value echo "$var" 我无法理解的是: $ foo() { echo "${var[0]}"; } $ var=(bar baz) foo (bar baz) 据我所知(按照前面示例的逻辑),它应该打印bar,而不是(bar baz)。 …
22 bash  array 


1
删除awk中的数组
在awk中,我可以使用循环清除数组,使其成为空数组,这等效于删除它。 for (key in array) delete array[key]; 有没有更简单的方法?我可以完全删除一个数组,以便可以将变量名重新用于标量吗?
18 awk  array 

2
“ $ {my_array [@] /#/-}”中的/#/-是什么类型的操作?
将数组转换为命令参数的可接受答案?使用以下Bash命令: command "${my_array[@]/#/-}" "$1" 我正试图弄清楚/#/-零件的作用。不幸的是,我不知道该怎么称呼,所以我很难找到任何文档。我浏览了有关阵列和一些网站的Bash手册页部分,但是找不到任何东西。
17 bash  array 

5
BASH关联数组打印
有没有办法在不循环所有元素的情况下打印整个数组([key] = value)? 假设我创建了一个包含一些元素的数组: declare -A array array=([a1]=1 [a2]=2 ... [b1]=bbb ... [f500]=abcdef) 我可以打印出整个阵列 for i in "${!array[@]}" do echo "${i}=${array[$i]}" done 但是,bash似乎已经知道如何一次“获取”所有数组元素-键${!array[@]}和值${array[@]}。 有没有一种方法可以使bash在不循环的情况下打印此信息? 编辑: typeset -p array做到了! 但是我不能一次删除前缀和后缀: a="$(typeset -p array)" b="${a##*(}" c="${b%% )*}" 有没有更干净的方法来获取/打印输出的键=值部分?


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.