标签: array

有没有办法用 bash 读取数组的最后一个元素?

如果我有一个包含 5 个元素的数组,例如:

[a][b][c][d][e]
Run Code Online (Sandbox Code Playgroud)

使用echo ${myarray[4]}我可以看到它包含什么。

但是如果我不知道给定数组中的元素数量怎么办?有没有办法读取未知长度数组的最后一个元素?即任何数组从右到左读取的第一个元素?

我想知道如何在 bash 中做到这一点。

bash array

98
推荐指数
4
解决办法
12万
查看次数

如何计算bash中定义的数组的长度?

我是 bash 新手,找不到很好的教程来回答我的问题。

array=( item1 item2 item3 )
for name in ${array[@]}; do
    echo current/total
    ... some other codes
done
Run Code Online (Sandbox Code Playgroud)

我想计算currenttotal值,因为它的预期输出是:

1/3
2/3
3/3
Run Code Online (Sandbox Code Playgroud)

感谢您提供任何提示。

bash array

96
推荐指数
1
解决办法
14万
查看次数

如何在bash中的数组中添加/删除元素?

我有一个包含一些元素的数组,但我想将新项目推送到数组的开头;我怎么做?

bash array shell-script

92
推荐指数
2
解决办法
17万
查看次数

如何从数组中完全删除元素?

unset array[0]删除元素但仍然如果我这样做echo ${array[0]}我得到一个空值而且还有其他方法可以做到这一点但是如果数组的元素包含如下空格

array[0]='james young'
array[1]='mary'
array[2]='randy orton'
Run Code Online (Sandbox Code Playgroud)

但这些也无法完成工作

array=${array[@]:1} #removed the 1st element
Run Code Online (Sandbox Code Playgroud)

现在我希望新数组像

array[0]='mary'
array[1]='randy orton'
Run Code Online (Sandbox Code Playgroud)

分配后空格会引起麻烦,实际数组变得像替换一样。

array=(mary randy orton)
Run Code Online (Sandbox Code Playgroud)

shell bash array shell-script

62
推荐指数
1
解决办法
7万
查看次数

将数组转换为命令的参数?

我有一个命令的“选项”数组。

my_array=(option1 option2 option3)
Run Code Online (Sandbox Code Playgroud)

我想在 bash 脚本中调用此命令,使用数组中的值作为选项。于是,command $(some magic here with my_array) "$1"变成:

command -option1 -option2 -option3 "$1"
Run Code Online (Sandbox Code Playgroud)

我该怎么做?是否可以?

bash array parameter

60
推荐指数
1
解决办法
3万
查看次数

`语法错误:创建数组时“(”意外`

我有两台(Debian)Linux 服务器。我正在创建一个shell脚本。

在第一个上,我创建了一个数组:

#!/bin/bash
target_array=(
    "/home/user/direct/filename -p123 -r"
)
Run Code Online (Sandbox Code Playgroud)

这很好用。但是当我在另一台服务器上运行它时,我得到:

Syntax error: "(" unexpected
Run Code Online (Sandbox Code Playgroud)

据我所知,两台服务器都是一样的。任何人都可以解释为什么这不起作用?

如果我直接在终端中输入它就可以了??


看起来当我运行它时

sh scriptname.sh
Run Code Online (Sandbox Code Playgroud)

我收到错误,但如果我运行它

./scriptname.sh
Run Code Online (Sandbox Code Playgroud)

好像没问题。有什么不同?

bash array shell-script

48
推荐指数
1
解决办法
7万
查看次数

Unix Bourne Shell 中的数组

我正在尝试在 Bourne shell ( /bin/sh) 中使用数组。我发现初始化数组元素的方法是:

arr=(1 2 3)
Run Code Online (Sandbox Code Playgroud)

但它遇到了一个错误:

syntax error at line 8: `arr=' unexpected
Run Code Online (Sandbox Code Playgroud)

现在,我发现此语法的帖子说它是 for bash,但我找不到 Bourne shell 的任何单独语法。语法是否/bin/sh也一样?

shell array bourne-shell

39
推荐指数
3
解决办法
5万
查看次数

Zsh 数组的第一个元素索引为 1 而不是 0 是否有原因?

根据我使用现代编程和脚本语言的经验,我相信大多数程序员通常习惯于将数组的第一个元素以0 表示为索引。
使用1有什么实质性的优势吗?

我确信除了 Zsh 之外,我听说过更多的语言对数组有类似的行为;对我来说很好,因为它同样方便。
但是,由于之前发布并广泛使用的 ksh 和 bash 等 shell 脚本语言都使用 0, 为什么有人会选择更改这个通用的“标准”?

我对我的问题的直接回答是“当然不是”;
那么,我能想到的关于 shell 的这个有点“独特的功能”的唯一解释是“他们这样做只是为了炫耀他们更酷的 shell ”。

不过,我对 Zsh 或其历史知之甚少,而且我关于此的琐碎理论很有可能没有任何意义。

对此有解释吗?还是只是出于个人喜好?

zsh array history

37
推荐指数
2
解决办法
1万
查看次数

有没有办法在 bash 关联数组变量上列出所有“索引 ID”(键)?

我有这个数组:

declare -A astr
Run Code Online (Sandbox Code Playgroud)

我向它添加元素:

astr[elemA]=123
astr[elemB]=199
Run Code Online (Sandbox Code Playgroud)

但稍后我需要知道什么是索引 ID(elemA 和 elemB)并列出它们。

echo "${astr[@]}" #this only get me the values...
Run Code Online (Sandbox Code Playgroud)

bash array

34
推荐指数
1
解决办法
3万
查看次数

Bash:位置参数切片

如何$@在不首先将所有位置参数复制到这样的另一个数组的情况下在 Bash 中获取切片?

argv=( "$@" )
echo "${argv[@]:2}";
Run Code Online (Sandbox Code Playgroud)

bash array parameter

32
推荐指数
2
解决办法
2万
查看次数

标签 统计

array ×10

bash ×8

shell-script ×3

parameter ×2

shell ×2

bourne-shell ×1

history ×1

zsh ×1