相关疑难解决方法(0)

如何在Bash中对数组进行切片

查看bash(1)手册页中的"Array"部分,我没有找到切片数组的方法.

所以我想出了这个过于复杂的功能:

#!/bin/bash

# @brief: slice a bash array
# @arg1:  output-name
# @arg2:  input-name
# @args:  seq args
# ----------------------------------------------
function slice() {
   local output=$1
   local input=$2
   shift 2
   local indexes=$(seq $*)

   local -i i
   local tmp=$(for i in $indexes 
                 do echo "$(eval echo \"\${$input[$i]}\")" 
               done)

   local IFS=$'\n'
   eval $output="( \$tmp )"
}
Run Code Online (Sandbox Code Playgroud)

像这样使用:

$ A=( foo bar "a  b c" 42 )
$ slice B A 1 2
$ echo "${B[0]}"  # bar
$ echo "${B[1]}"  # a …
Run Code Online (Sandbox Code Playgroud)

arrays bash slice

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

如何在bash中声明2D数组

我想知道如何在bash中声明一个2D数组然后初始化为0.

在C中它看起来像这样:

int a[4][5] = {0};
Run Code Online (Sandbox Code Playgroud)

我如何为元素赋值?如在C:

a[2][3] = 3;
Run Code Online (Sandbox Code Playgroud)

linux bash shell

69
推荐指数
6
解决办法
18万
查看次数

如何在bash中创建列表(或类似列表)数组?

我想遍历bash中的一些列表。现在我有

array=("list1item1 list1item2" "list2item list2item2")

for list in "${array[@]}"
do
    for item in $list
    do
        echo $item
    done
done
Run Code Online (Sandbox Code Playgroud)

这行不通。有什么方法可以在bash中创建列表列表,数组数组或列表数组?

我想遍历list1,然后遍历list1中的listitems。然后遍历list2和list2中的列表项。

arrays bash loops list

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

如何格式化和遍历包含数组的数组,并且每个数组包含一个数组?

我正在尝试在包含在数组中的数组中创建多维。

tests=("'0' '1 2'" "'4' '5 6'")
Run Code Online (Sandbox Code Playgroud)

在测试中的每个数组中,我想要子数组。使用第一个数组“'0''1,2'”,创建另一个 for 循环以遍历子数组的内容。

bash shell

1
推荐指数
1
解决办法
5138
查看次数

如何在 Bash 中迭代关联数组(其中值是数组)?

我编写此代码是为了循环访问 LAN 上的用户名和域。遗憾的是,脚本没有打印任何内容。

#!/bin/bash

construct_array_of_trgts() {
  declare -A usrs_n_dmns
  
  local -a guest_dmns
  local -a usrs=("j" "jim" "o" "root")
  local -a guest_dmns=("raspberrypi" "lenovo")
  for d in "${guest_dmns[@]}"; do 
    PS3="Select the users to include for sshing into $d. Q when done selecting."$'\n'
    local -a targt_usrs
    select u in "${usrs[@]}"; do
      if [[ "$u" ]]; then
        targt_usrs+=("$u")
     elif [[ "$REPLY" == 'q' ]]; then 
      break;
     fi
    done
    usrs_n_dmns["${d}"]="$targt_usrs"
  done
  
}
construct_array_of_trgts

for d in "${!usrs_n_dmns[@]}"; do
  targt_usrs=("${usrs_n_dmns["${d}"]}")
  echo "$usrs_n_dmns"
  for u in "${targt_usrs[@]}"; …
Run Code Online (Sandbox Code Playgroud)

arrays bash for-loop associative-array

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

标签 统计

bash ×5

arrays ×3

shell ×2

associative-array ×1

for-loop ×1

linux ×1

list ×1

loops ×1

slice ×1