arrays - 从数组中删除最后一个元素

标签 arrays bash

我想删除数组中的最后一个条目,并且我希望数组在我使用 ${#array[@]} 时显示它少了 1 个条目。这是我正在使用的当前行:

unset GreppedURLs[${#GreppedURLs[@]} -1]

请指正并告诉我正确的方法。

最佳答案

您的答案(几乎)正确 for non-sparse indexed arrays ¹:

unset 'arr[${#arr[@]}-1]'

Bash 4.3 or higher added this new syntax to do the same:

 unset arr[-1]

(注意单引号:它们防止路径名扩展)。

演示:

arr=( a b c )
echo ${#arr[@]}

3

for a in "${arr[@]}"; do echo "$a"; done
a
b
c
unset 'arr[${#arr[@]}-1]'
for a in "${arr[@]}"; do echo "$a"; done
a
b

妙语

echo ${#arr[@]}
2

(GNU bash,版本 4.2.8(1)-release (x86_64-pc-linux-gnu))


¹ @Wil 提供了 excellent answer适用于各种阵列

关于arrays - 从数组中删除最后一个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8247433/

相关文章:

c++ - 如何追踪导致段错误的原因?

java - 如何返回包含二维数组中最小值的列 ID (Java)

c - 整数数组的 malloc 和 realloc 大小

bash - 在 Bash 中的命令之前设置环境变量不适用于管道中的第二个命令

ios - Swift 中带有部分和自定义对象的 UITableView

ruby - array group_by 转换日期

linux - 我可以创建一个 bash 脚本,该脚本依赖于我的 shell 中先前执行的命令的退出代码吗?

xml - 如何在 shell 脚本中解析 rss-feeds/xml

linux - 为什么 OS X 10 中的默认 shell 与 Linux(Mint、Lubuntu...)中的默认 shell 看起来不同?

linux - wget 附加唯一\定义的前缀