Автор Тема: Търсене и подмяна на число в Array - BSD  (Прочетена 2686 пъти)

loshiat

  • Напреднали
  • *****
  • Публикации: 20
    • Профил
Здравейте. Въпроса ми е: Unix Скрипт..
x=32
y=33
array=(12 14 55 32  43)
..... ако Х го има в array смени го с Y
done.

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

b2l

  • Напреднали
  • *****
  • Публикации: 4786
  • Distribution: MCC Interim
  • Window Manager: - // - // -
  • ...sometimes I feel like screaming... || RTFM!
    • Профил
    • WWW
Re: Търсене и подмяна на число в Array - BSD
« Отговор #1 -: 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
Активен

"Човекът е въже, опънато между звяра и свръхчовека, въже над пропаст. Човекът е нещо, което трябва да бъде превъзмогнато." - Фр. Ницше

clovenhoof

  • Напреднали
  • *****
  • Публикации: 534
  • Distribution: Mac OSX 10.9.2
    • Профил
Re: Търсене и подмяна на число в Array - BSD
« Отговор #2 -: 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.  
Активен

We are just a moment in time
A blink of an eye
A dream for the blind
Visions from a dying brain

loshiat

  • Напреднали
  • *****
  • Публикации: 20
    • Профил
Re: Търсене и подмяна на число в Array - BSD
« Отговор #3 -: Oct 07, 2011, 11:35 »
приятели НЕ СТАВА......
Активен

kip

  • Напреднали
  • *****
  • Публикации: 162
  • Distribution: Debian, FreeBSD, Arch Linux
  • Window Manager: Gnome,LXDE,XFCE
    • Профил
Re: Търсене и подмяна на число в Array - BSD
« Отговор #4 -: Oct 07, 2011, 11:57 »
A така става ли ?
Код:
#!/bin/bash
x=32
y=100
array=(12 14 55 32 43)
echo ${array[@]}
echo ${array[@]//$x/$y}
Активен

clovenhoof

  • Напреднали
  • *****
  • Публикации: 534
  • Distribution: Mac OSX 10.9.2
    • Профил
Re: Търсене и подмяна на число в Array - BSD
« Отговор #5 -: Oct 07, 2011, 12:14 »
приятели НЕ СТАВА......

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

We are just a moment in time
A blink of an eye
A dream for the blind
Visions from a dying brain

radoulov

  • Напреднали
  • *****
  • Публикации: 116
    • Профил
Re: Търсене и подмяна на число в Array - BSD
« Отговор #6 -: 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[@]}"

Активен

radoulov

  • Напреднали
  • *****
  • Публикации: 116
    • Профил
Re: Търсене и подмяна на число в Array - BSD
« Отговор #7 -: 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}"
« Последна редакция: Oct 07, 2011, 12:47 от radoulov »
Активен

loshiat

  • Напреднали
  • *****
  • Публикации: 20
    • Профил
Re: Търсене и подмяна на число в Array - BSD
« Отговор #8 -: 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 остава старото....
Активен

radoulov

  • Напреднали
  • *****
  • Публикации: 116
    • Профил
Re: Търсене и подмяна на число в Array - BSD
« Отговор #9 -: Oct 07, 2011, 13:53 »
Имай предвид, че можеш да използваш и parameter expansion:

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

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

132 ще стане 133 и т.н.
« Последна редакция: Oct 07, 2011, 14:02 от radoulov »
Активен


Подобни теми
Заглавие Започната от Отговора Прегледи Последна публикация
Array of strings - c
Общ форум
ivanatora 3 1927 Последна публикация Mar 25, 2007, 00:24
от cenata
проблем със set -A array
Общ форум
loshiat 5 2268 Последна публикация Jun 14, 2010, 16:09
от romeo_ninov
много малък и ОГРОМЕН проблем с Bash ARRAY
Общ форум
loshiat 11 3370 Последна публикация Jul 15, 2010, 12:19
от niakoi
PHP: От array към associative array
Web development
b2l 25 7726 Последна публикация Jul 12, 2012, 17:23
от nask00