У меня есть строка «http://example.comhttp://example2.com« как бы я их ввел в две разные переменные?Как бы я разобрал эту строку?
Я очень новичок в Linux. Спасибо, вся помощь приветствуется.
У меня есть строка «http://example.comhttp://example2.com« как бы я их ввел в две разные переменные?Как бы я разобрал эту строку?
Я очень новичок в Linux. Спасибо, вся помощь приветствуется.
Использование for
петля
str="http://example.com http://example2.com"
for word in $str
do
echo $word
done
Спонтанно, я бы не использовать grep
, но read
:
EXAMPLE="http://example.com http://example2.com"
read URL1 URL2 <<<"$EXAMPLE"
<<<
синтаксис предполагает, что вы используете Bash, однако. В противном случае, вы должны были бы сделать это следующим образом:
read URL1 URL2 <<EOF
$EXAMPLE
EOF
Других ответами являются все замечательно, но есть много способов кожи этой проблемы, так вот еще. :-) Так как ваша строка разделенных пробелами, и ваша оболочка по умолчанию разделитель (IFS
) включает в себя пространство, вы можете воспользоваться этим:
mystr="http://example.com http://example2.com"
set -- $mystr
foo=$1 # http://example.com
bar=$2 # http://example2.com
(--
после set
не является строго обязательным в данном случае, но это предотвращает появление каких-то глупых вещей в случае, если по какой-то причине ваша строка начиналась с тире.)
Как альтернативный ответ на мой предыдущий, вы также можете использовать следующий синтаксис, который должен быть доступен во всех стандартные оболочки:
EXAMPLE="http://example.com http://example2.com"
URL1="${EXAMPLE%% *}"
URL2="${EXAMPLE#* }"
Для получения дополнительной информации о том, как они работают, вы можете увидеть страницу управления Bash/Dash.
Да, технически это работает, но, вероятно, проще и понятнее полагаться на токенизацию «IFS», как и во всех других ответах. :-) (И если разделитель не является пространством, достаточно легко настроить 'IFS' соответственно.) –
Я согласен, но все они используют их. Может также представить его. :) Я бы сказал, что немного уродливо мутировать «IFS», чтобы сделать некоторую локальную операцию. – Dolda2000
Это не так уродливо, если вы используете 'local' (поддерживаемый bash и тире), чтобы установить его внутри функции. –
Какие переменные? Оболочка? Perl? Рубин? Ява? PHP? –
@ ChrisJester-Young Shell – Sedulous