Как разделить строку на разделитель в 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 это работает.
Comments