2016-08-31 3 views
1

Я не уверен, как объявить две переменные из одной строки. Строка:Bash String как удалить символы до и после двоеточия

Tom:d04b98f48e8f8bcc15c6ae5ac050801cd6dcfd428fb5f9e65c4e16e7807340fa 

Я надеюсь объявить 2 переменных имя и хэш, где:

echo "$name" 
OUTPUT - Tom 
echo "$hash" 
OUTPUT - d04b98f48e8f8bcc15c6ae5ac050801cd6dcfd428fb5f9e65c4e16e7807340fa 

ответ

4

Использование обстреливать [ parameter expansion ].

$ string="Tom:d04b98f48e8f8bcc15c6ae5ac050801cd6dcfd428fb5f9e65c4e16e7807340fa" 
$ name="${string%:*}" 
$ echo "$name" 
Tom 
$ hash="${string#*:}" 
$ echo "$hash" # See note 
d04b98f48e8f8bcc15c6ae5ac050801cd6dcfd428fb5f9e65c4e16e7807340fa 

Тонкая нота: Рекомендуется, что вы двойные кавычки переменные, чтобы предотвратить расщепление слов.

+0

Спасибо вам. Это сработало отлично. Cheers – Jolan

+0

@ Jolan: Спасибо, что приняли ответ, посмотрите на записку, которую я оставил для вас. – sjsam

+0

Я поблагодарил вас – Jolan

1

read Использование:

str=Tom:d04b98f48e8f8bcc15c6ae5ac050801cd6dcfd428fb5f9e65c4e16e7807340fa 
IFS=: read name hash <<< "$str" 
Смежные вопросы