Questions tagged «array»

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

8
如何在bash中测试数组元素是否全部相等?
以下数组表示每台Linux机器上的磁盘数 每个单个阵列都包括linux计算机上的磁盘数。 echo ${ARRAY_DISK_Quantity[*]} 4 4 4 4 2 4 4 4 识别所有数组值相等的简单方法是什么? 良好状态: 4 4 4 4 4 4 4 4 不良状态: 4 4 4 4 4 4 2 4 不良状态: 6 6 6 6 6 6 6 6 6 6 2 6 2
15 bash  shell-script  awk  array 

5
如何测试某项是否在bash数组中?
帮助一个简单的脚本 #!/bin/bash array1=( prova1 prova2 slack64 ) a="slack64" b="ab" if [ $a = $b ] then echo "$a = $b : a is equal to b" else echo "$a = $b: a is not equal to b" fi 这个脚本根本行不通,我想要一个脚本来检查列表中是否存在slack64(我使用数组),然后简单地给我,是存在还是不存在。我不知道如何比较具有单个变量的数组。
15 bash  array 

1
引用bash数组值时,@和*有什么区别?
这个Bash指南说: 如果索引号是@或*,则引用数组的所有成员。 当我这样做时: LIST=(1 2 3) for i in "${LIST[@]}"; do echo "example.$i " done 给出:(example.1 example.2 example.3期望的结果)。 但是当我使用时${LIST[*]},我得到了example.1 2 3。 为什么? 编辑:使用printf时,@和*实际上给出相同的结果。
15 bash  array 


4
将JSON数组中的一个字段解析为bash数组
我有一个JSON输出,其中包含存储在变量中的对象列表。(我可能没有这样说的权利) [ { "item1": "value1", "item2": "value2", "sub items": [ { "subitem": "subvalue" } ] }, { "item1": "value1_2", "item2": "value2_2", "sub items_2": [ { "subitem_2": "subvalue_2" } ] } ] 我需要数组中的item2的所有值,以便bash脚本在ubuntu 14.04.1。上运行。 我发现了很多方法可以将整个结果放入数组,而不仅仅是我需要的项目

3
如何将bash样式的数组移植到ash?
前段时间,我编写了一个bash脚本,现在该脚本应该可以在带有的环境中运行ash。 在bash它就像: services=( "service1.service" "service2.service" "service3.service" ) for service in "${services[@]}" do START $service done START() { echo "Starting "$1 systemctl start $1 } 实际上,有大约40种服务在阵列中,我想使这种过渡尽可能轻松,整洁。一直在使用bashisms。现在,我正忙于使脚本更具可移植性的任务。 出于可移植性的原因,最好有一个纯粹的ash解决方案。但是,由于我拥有足够强大的能力busybox,因此我可能会牺牲一些可移植性。只有在可读性得到很大提高的情况下,因为“干净”脚本也是一个度量标准。 什么是便携式和清洁在这种情况下的解决方案?
13 bash  shell  array  ash 

4
Bash脚本等待进程并获取返回码
我正在尝试创建一个脚本,它将启动许多后台命令。对于每个后台命令,我需要获取返回码。 我一直在尝试以下脚本: #!/bin/bash set -x pid=() return=() for i in 1 2 do echo start $i ssh mysql "/root/test$i.sh" & pid[$i]=$! done for i in ${#pid[@]} do echo ${pid[$i]} wait ${pid[$i]} return[$i]=$? if [ ${return[$i]} -ne 0 ] then echo mail error fi done echo ${return[1]} echo ${return[2]} 我的问题是在等待循环中,如果第二个pid在第一个pid之前完成,我将无法获得返回代码。 我知道我可以运行wait …
13 linux  bash  process  array 

5
BASH中两个数组的交集
我有两个这样的数组: A=(vol-175a3b54 vol-382c477b vol-8c027acf vol-93d6fed0 vol-71600106 vol-79f7970e vol-e3d6a894 vol-d9d6a8ae vol-8dbbc2fa vol-98c2bbef vol-ae7ed9e3 vol-5540e618 vol-9e3bbed3 vol-993bbed4 vol-a83bbee5 vol-ff52deb2) B=(vol-175a3b54 vol-e38d0c94 vol-2a19386a vol-b846c5cf vol-98c2bbef vol-7320102b vol-8f6226cc vol-27991850 vol-71600106 vol-615e1222) 数组未排序,甚至可能包含重复的元素。 我想使这两个数组相交并将元素存储在另一个数组中。我该怎么办? 另外,我如何获得出现在B中但在A中不可用的元素的列表?
12 bash  scripting  array 


2
通过外壳测试对阵列的支持
有没有一种简洁的方法可以在命令行中通过类似Bourne的本地shell测试数组支持? 这始终是可能的: $ arr=(0 1 2 3);if [ "${arr[2]}" != 2 ];then echo "No array support";fi 或测试$SHELL和shell版本: $ eval $(echo "$SHELL --version") | grep version 然后,假设我可以访问它,则阅读手册页。(即使从那里开始/bin/bash,我也假设所有类似Bourne的shell都接受long选项--version,例如,对于ksh 来说,这样做会导致中断。) 我正在寻找一个简单的测试,可以在脚本开始时甚至在调用它之前将其无人值守并纳入“ 用法”部分。

3
在Bash中从字符串转到“单词”数组
我需要从字符串转到数组,其中每个条目都是该字符串上的每个单词。例如,从以下开始: VotePedro="Vote for Pedro" 我需要数组: Vote For Pedro 然后,我应该可以将其迭代为: for i in "${votePedroArray[@]}" do ## Do something done

2
计算bash数组中元素的数目,其中数组名称是动态的(即存储在变量中)
问题的简要说明: 是否有内置的bash方法来计算bash数组中元素的数量,而该数组的名称是动态的(即存储在变量中),而无需求助于对该数组的完全复制或使用eval? 更多信息: 使用bash参数替换,可以执行以下操作: 确定数组的长度: myArr=(A B C); echo ${#myArr[@]}。 通过名称间接引用变量:( NAME=myVar; echo ${!NAME}这也适用于数组元素): NAME=myArr[1]; echo ${!NAME} 但是,如果数组的名称存储在另一个变量中,那么如何确定数组中元素的数量呢?(可以将其视为上述两个参数替换的组合。)例如: myArr=(A B C D) NAME=myArr # Get the number of elements in the array indirectly referenced by NAME. count=${#$NAME[@]} # This syntax is invalid. What is the right way? 以下是所有失败的多次尝试: # Setup …

1
bash变量分配中的单括号
我想知道bash中的单个括号。我知道它们用于在子shell中执行命令,并且它们用于创建数组,但是它们还用于其他吗? 引起我注意的一件事是,当您使用in变量赋值时,例如 var=(hello) echo $var # hello bash不会产生错误或任何东西,并且输出与 var=hello 这两个变量定义是相同的还是有区别的?
11 bash  array 

2
将默认数组写入Bash中的变量
我期待 excludes="${excludes:-( ${default_excludes[@]} )}" 如果$excludes为空,则为数组。不幸的是,后面的东西:-被认为是字符串。我是否错过了一些语法扭曲,还是不得不使用笨拙的 if [ -z "${excludes:-}" ] then excludes=( "${default_excludes[@]}" ) fi ?
10 bash  array 

1
使用getopts为一个选项提供两个参数
在下面的代码中,当我给出选项时,r则getopts需要一个参数: while getopts ":hr::l:" opt; do case $opt in r ) echo "Run Numbers - argument = $OPTARG " ;; l ) echo "Latency range - argument = $OPTARG" ;; h ) helptext graceful_exit ;; * ) usage clean_up exit 1 esac done 但是我需要在-r选项之后传递两个参数,而不是一个。是否有捷径可寻?

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.