Можно ли установить переменные, равные выражениям в UNIX? - PullRequest
2 голосов
/ 14 октября 2010

В Unix, как это сделать?

#!/bin/sh
x=echo "Hello" | grep '^[A-Z]'

Я хочу, чтобы x принял значение "Hello", но этот сценарий не работает. Как правильно написать что-то подобное?

Ответы [ 3 ]

11 голосов
/ 14 октября 2010

Вы можете использовать command substitution как:

x=$(echo "Hello" | grep '^[A-Z]')

Вы также можете использовать устаревший стиль обратной кавычки как:

x=`echo "Hello" | grep '^[A-Z]'`
2 голосов
/ 14 октября 2010

вы также можете использовать внутреннюю оболочку без вызова внешних инструментов, например case / esac

str="Hello"
case "$str" in
 [A-Z]* ) x=$str;;
esac
0 голосов
/ 14 октября 2010

убедитесь, что вы используете ожидаемое регулярное выражение, поддерживающее grep, у grep много вариантов в разных версиях Unix.

...