Не удается настроить Wi-Fi на Packard Bell Dot S

Использование awk:

function changeNumberByPosition { 
  echo | string=$1 position=$2 newvalue=$3 \
    awk -v FS=. -v OFS=.  '{ 
      $0=ENVIRON["string"]; 
      $ENVIRON["position"]=ENVIRON["newvalue"]; 
      print;
   }';
}

Пример запуска:

NUMBERLIST=10.90.123.80.42
new=$(changeNumberByPosition "$NUMBERLIST" 4 19)
echo "$new"
10.90.123.19.42

или обновление существующего значения новым значением:

NUMBERLIST=10.90.123.80.42
NUMBERLIST=$(changeNumberByPosition "$NUMBERLIST" 4 19)
echo "$NUMBERLIST"
10.90.123.19.42

Использование bash v4+:

function changeNumberByPosition ( 
  set -o noglob
  IFS=. 
  a=($1); 
  a[$2]=$3;
  printf '%s\n' "${a[*]}" 
)

Версия только для bash функция:

  1. разбивает первый параметр (например, $NUMBERLIST) на массив a на основе периодов, используя IFS.
  2. заменяет параметр $2 значением в $3.
  3. выводит первые N-1 элементов массива, за каждым из которых следует точка, затем выводит последний элемент массива.
  4. все это делается в подоболочке, так что $a не загромождает существующую среду.
1
30.10.2016, 23:22
0 ответов

Теги

Похожие вопросы