Aquesta és una revisió antiga del document


arrays bash

array=(valor0 'valor uno' 'valor dos')
array[0]='valor0'
array[1]='valor uno'
array[2]='valor dos'
declare -a array=(valor0 'valor uno' 'valor dos')
  • todo el array: echo ${array[@]}
  • un elemento: echo ${array[n]}
  • del elemento n al m: echo ${array[@]:n:m}
  • del elemento n, subcadena a-b: echo ${array[n]:a:b}
  • del array: echo ${#array[@]}
  • del primer elemento: echo ${#array}
  • del tercero: echo ${#array[2]}
  • añadir elemento(s) a un array existente: array=(«${array[@]}» «valor 3» «valor 4»)
  • eliminar un elemento n: unset array[n]
    • existe forma de eliminar el índice o eliminar por patrón
  • eliminar un array: unset array
  • cambiar string1 por string2: ${array[@]/string1/string2}
  • copiar un array: new_array=(«${array[@]}»)
  • concatenar arrays: new_new_array=(«${array[@]}» «${new_array[@]}»)
  • array=(` cat file `)

#!/bin/bash

array=("first item" "second item" "third" "item")

echo "Number of items in original array: ${#array[*]}"
for ix in ${!array[*]}
do
    printf "   %s\n" "${array[$ix]}"
done
echo

arr=(${array[*]})
echo "After unquoted expansion: ${#arr[*]}"
for ix in ${!arr[*]}
do
    printf "   %s\n" "${arr[$ix]}"
done
echo

arr=("${array[*]}")
echo "After * quoted expansion: ${#arr[*]}"
for ix in ${!arr[*]}
do
    printf "   %s\n" "${arr[$ix]}"
done
echo

arr=("${array[@]}")
echo "After @ quoted expansion: ${#arr[*]}"
for ix in ${!arr[*]}
do
    printf "   %s\n" "${arr[$ix]}"
done
resultado:

Number of items in original array: 4
   first item
   second item
   third
   item
 
After unquoted expansion: 6
   first
   item
   second
   item
   third
   item
 
After * quoted expansion: 1
   first item second item third item
 
After @ quoted expansion: 4
   first item
   second item
   third
   item
  • linux/bash/arrays.1534922866.txt.gz
  • Darrera modificació: 22/08/2018 00:27
  • per mate