Как насчет этого, используя только Bash:
$ s="a b c d e=x f g h i"
$ s="${s#*=}"
$ echo "${s%% *}"
x
Используемые расширения параметров задокументированы здесь .
Еще один, использующий sed
:
$ s="a b c d e=x f g h i"
$ echo "$s" | sed 's|.*=\([^[:space:]]*\).*|\1|'
x
Снова с sed
:
$ s="a b c d e=x f g h i"
$ echo "$s" | sed 's|.*=||; s|[[:space:]].*||'
x
Еще один, использующий cut
:
$ s="a b c d e=x f g h i"
$ echo "$s" | cut -d = -f 2 | cut -d ' ' -f 1
x
Мой личный фаворит - первый: ему нужен только Bash, и он не запускает никаких дополнительных процессов.
EDIT:
В соответствии с комментариями, приведенные выше выражения изменены, чтобы соответствовать e
, в частности:
$ s="a b c d e=x f g h i"
$ s="${s#*e=}"; echo "${s%% *}"
x
$ s="a b c d e=x f g h i"
$ echo "$s" | sed 's|.*\be=\([^[:space:]]*\).*|\1|'
x
$ echo "$s" | sed 's|.*\be=||; s|[[:space:]].*||'
x