18 Haziran 2020 Perşembe

bash kodlama - array

Giriş

1. Array Tanımlamak
array tanımlamak için iki yöntem var
1. declare -a kullanmak
2. =(...) kullanmak

declare - a
Şöyle yaparız.
declare -a obj
obj+=("val1")
obj+=("val2")

for item in ${obj[@]}; do
  echo "${obj[${item}]} ${item}"
done
declare -n ile değişkene referans alınır. Şöyle yaparız.
$ spam="fred"
$ declare -n tripe=spam
$ echo $tripe
fred
$ tripe=juki
$ echo $spam
juki
2. =(...) Kullamak
Örnek
Açıklaması şöyle
You can store the current directory’s files in an array as follows:
Şöyle yaparız.
items=(*)
Örnek
Şöyle yaparız
#!/bin/bash
var=ON
cmd=( /home/username/myscript )   # create array with one element
if [ "$var" == "ON" ]; then
    cmd+=( -a )                   # append to the array
fi
cmd+=( -b 76 )                    # append two elements
3. Array Kullanmak
# Karakteri
Açıklaması şöyle
The # is often used in bash to count the number of occurrences or the length of a variable.
Dizinin Uzunluğunu Bulma-${#array[@]} Karakteri
Örnek
Şöyle yaparız.
myArr=(A B C); echo ${#myArr[@]}
Sonuç olarak 3 alırız.
Örnek
Şöyle yaparız.
myArr=(A B C); echo ${#myArr[0]}
İlk eleman olan A'nın uzunluğunu verir. Sonuç olarak 1 alırız.
Örnek
Elimizde şöyle bir dizi olsun.
array[0]="Shields at 90%"
array[1]="Engaging proton overdrive"
array[2]="Autopilot disengaged"
array[3]="Targetting solution available"
array[4]="Alert. Incoming missile."
array[5]="Deploying countermeasures."
array[6]="Firing torpedoes."
array[7]="Engaging auto-cannon."
array[8]="Severe damage on deck 17. Sealing off."
array[9]="Deploying repair droids to deck 17."

line=${array[$RANDOM % ${#array[@]}]}
speech "$line"
.bashrc dosyasına  şöyle yaparız. Böylece terminalden her komut çalıştırdığımızda farklı bir ses çıkarır.
PROMPT_COMMAND="bash $HOME/PATH/TO/myscript.sh"
String'in Uzunluğunu Bulma
Şöyle yaparız.
myvar="some string"; echo ${#myvar}
Sonuç olarak 11 alırız.

Tüm Diziyi Dolaşmak - "${arr[@]}" veya "${arr[*]}" Karakterleri
Array Expansion yazısına taşıdım

Diziden Çıkartma Yapmak
Şöyle yaparız. $# -1 ile en son elemana erişiriz.
local argv=( "$@" )
local last="${argv[$# - 1]}"
argv=( "${argv[@]:0:$# - 1}" )
Diziye Ekleme Yapmak
+=(...) şeklinde yapılır.

Örnek
Şöyle yaparız.
# this.txt first line is [Test this]
# another.txt first line is [Test another]
paths=(
  ./this/path/this.txt
  ./another/path/another.txt
)

for i in ${paths[@]}; do
  read -r line < $i
  lines+=("$line")
done

Hiç yorum yok:

Yorum Gönder