В
RemChar="${array[2]}" | sed 's/[A-Za-z]*//g'
вы делаете не то, что ожидаете.Сравните это с вашей рабочей версией:
echo "${array[2]}" | sed 's/[A-Za-z]*//g'
Здесь вы используете echo
для ввода sed
.В первой строке ничего не дано sed
.
Вы также ожидаете заменить результат выполнения его значением, чтобы сохранить его в var.Для этого вы должны использовать синтаксис подстановки команд:
RemChar=$(echo "${array[2]}" | sed 's/[A-Za-z]*//g')
И эта строка также является примером бесполезного использования эха.Было бы чище с здесь строкой :
RemChar=$(sed 's/[A-Za-z]*//g' <<< "${array[2]}")
Вы даже можете избежать использования sed
, используя средства, предоставляемые bash:
RemChar="${array[2]//[A-Za-z]/}"
Шаблон тот же, который вы использовали с добавлением /
в начале, чтобы указать bash
заменить все совпадения в строке (имитируя ваш g
в sed
).