У меня есть эта строка, хранящаяся в переменной:
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) на ;
. Я не уверен, что случилось с этим ответом, как вы reset IFS
вернулись к умолчанию?
RE: IFS
solution, я пробовал это, и он работает, я сохраняю старый IFS
, а затем восстанавливаю его:
IN="[email protected];[email protected]"
OIFS=$IFS
IFS=';'
mails2=$IN
for x in $mails2
do
echo "> [$x]"
done
IFS=$OIFS
Кстати, когда я пробовал
mails2=($IN)
У меня появилась первая строка при печати в цикле, без скобок вокруг $IN
она работает.