В Unix, как это сделать?
#!/bin/sh x=echo "Hello" | grep '^[A-Z]'
Я хочу, чтобы x принял значение "Hello", но этот сценарий не работает. Как правильно написать что-то подобное?
x
"Hello"
Вы можете использовать command substitution как:
command substitution
x=$(echo "Hello" | grep '^[A-Z]')
Вы также можете использовать устаревший стиль обратной кавычки как:
x=`echo "Hello" | grep '^[A-Z]'`
вы также можете использовать внутреннюю оболочку без вызова внешних инструментов, например case / esac
str="Hello" case "$str" in [A-Z]* ) x=$str;; esac
убедитесь, что вы используете ожидаемое регулярное выражение, поддерживающее grep, у grep много вариантов в разных версиях Unix.
grep