Как разделить строку на разделитель в Bash?



у меня эта строка хранится в переменной:



IN="[email protected];[email protected]"


теперь я хотел бы разделить строки ; разделитель так, что у меня есть:



ADDR1="[email protected]"
ADDR2="[email protected]"


мне не обязательно нужен ADDR1 и ADDR2 переменные. Если они являются элементами массива, это еще лучше.





после предложений из ответов ниже, я закончил со следующим, что я был после:



#!/usr/bin/env bash

IN="[email protected];[email protected]"

mails=$(echo $IN | tr ";" "n")

for addr in $mails
do
echo "> [$addr]"
done


выход:



> [[email protected]]
> [[email protected]]


было решение, включающее установку Internal_field_separator (IFS) to ;. Я не уверен, что произошло с этим ответом, как вы сбрасываете IFS по умолчанию?



RE:IFS решение, я попробовал это, и это работает, я держу старый IFS, а затем восстановить ее:



IN="[email protected];[email protected]"

OIFS=$IFS
IFS=';'
mails2=$IN
for x in $mails2
do
echo "> [$x]"
done

IFS=$OIFS


кстати, когда я пробовал



mails2=($IN)


я только получил первую строку при печати это в цикле, без скобок вокруг $IN это работает.

811   0  

Comments

    Ничего не найдено.