Linux за българи: Форуми

Програмиране => Общ форум => Темата е започната от: loshiat в Oct 07, 2011, 09:25



Титла: Търсене и подмяна на число в Array - BSD
Публикувано от: loshiat в Oct 07, 2011, 09:25
Здравейте. Въпроса ми е: Unix Скрипт..
x=32
y=33
array=(12 14 55 32  43)
..... ако Х го има в array смени го с Y
done.

Благодаря предварително


Титла: Re: Търсене и подмяна на число в Array - BSD
Публикувано от: b2l в Oct 07, 2011, 09:46
Не съм сигурен, че е така:

Код
GeSHi (Bash):
  1. x=32
  2. y=33
  3.  
  4. array=(12 14 55 32  43)
  5. for i in "${array[@]}"
  6. do
  7.    if [ "$i" == "$x" ] ; then
  8.        array[$i] = $y
  9.    fi
  10. done


Титла: Re: Търсене и подмяна на число в Array - BSD
Публикувано от: clovenhoof в Oct 07, 2011, 10:45
Не съм сигурен, че е така:

Код
GeSHi (Bash):
  1. x=32
  2. y=33
  3.  
  4. array=(12 14 55 32  43)
  5. for i in "${array[@]}"
  6. do
  7.    if [ "$i" == "$x" ] ; then
  8.        array[$i] = $y
  9.    fi
  10. done

Не съм сигурен за синтаксиса ама това не трябва ли да е така:
Код
GeSHi (Bash):
  1.    if [ array[$i] == $х ] ; then
  2.        array[$i] = $y
  3.    fi
  4.  


Титла: Re: Търсене и подмяна на число в Array - BSD
Публикувано от: loshiat в Oct 07, 2011, 11:35
приятели НЕ СТАВА......


Титла: Re: Търсене и подмяна на число в Array - BSD
Публикувано от: kip в Oct 07, 2011, 11:57
A така става ли ?
Код:
#!/bin/bash
x=32
y=100
array=(12 14 55 32 43)
echo ${array[@]}
echo ${array[@]//$x/$y}


Титла: Re: Търсене и подмяна на число в Array - BSD
Публикувано от: clovenhoof в Oct 07, 2011, 12:14
приятели НЕ СТАВА......

Ами направи го да става.
На твое място вместо да питам тук щях да гуглирам за синтаксиса на баш.


Титла: Re: Търсене и подмяна на число в Array - BSD
Публикувано от: radoulov в Oct 07, 2011, 12:22
приятели НЕ СТАВА......

Код
GeSHi (Bash):
  1. x=32 y=33 array=(12 14 55 32 43)
  2.  
  3. printf '%s\n' before
  4. printf '\t%s\n' "${array[@]}"
  5.  
  6. for ((i = 0; ++i < ${#array[@]};)); do
  7.  [[ ${array[i]} == $x ]] &&
  8.    array[i]=$y
  9. done
  10.  
  11. printf '%s\n' after
  12. printf '\t%s\n' "${array[@]}"



Титла: Re: Търсене и подмяна на число в Array - BSD
Публикувано от: radoulov в Oct 07, 2011, 12:25
A така става ли ?
Код:
#!/bin/bash
x=32
y=100
array=(12 14 55 32 43)
echo ${array[@]}
echo ${array[@]//$x/$y}

Зависи ...., не съм сигурен, че loshiat иска това,
пробвай този код и виж какво става:

Код
GeSHi (Bash):
  1. x=32 y=100 array=(321 132 55 32 43)
  2. printf '%s\n' before
  3. printf '%s\n' "${array[@]}"
  4.  
  5. printf '%s\n' after
  6. printf '%s\n' "${array[@]//$x/$y}"


Титла: Re: Търсене и подмяна на число в Array - BSD
Публикувано от: loshiat в Oct 07, 2011, 13:40
Благодаря на всички , особенно на radulov....
това е което ми трябваше....
   
Код:
x=32 y=33 array=(12 14 55 32 43)
     
    printf '%s\n' before
    printf '\t%s\n' "${array[@]}"
     
    for ((i = 0; ++i < ${#array[@]};)); do
     [[ ${array[i]} == $x ]] &&
       array[i]=$y
    done
     
    printf '%s\n' after
    printf '\t%s\n' "${array[@]}"

...другото само може да ми покаже различно но в array остава старото....


Титла: Re: Търсене и подмяна на число в Array - BSD
Публикувано от: radoulov в Oct 07, 2011, 13:53
Имай предвид, че можеш да използваш и parameter expansion:

Код
GeSHi (Bash):
  1. array=( "${array[@]//$x/$y}" )

Само че в този случай, ще бъдат променени всички елементи,
които съдържат 32, не само тези, които са точно 32:

132 ще стане 133 и т.н.