В bash есть особенность: внутри одинарных кавычек значение переменной не разворачивается:
networkByte="205"
result1=`echo $networkByte`
result2=`echo '$networkByte'`
echo $result1
echo $result2
Выхлоп:
205
$networkByte
В связи с этим вопрос: а как тогда подставлять значения переменных в grep/sed? Вот есть такая команда:
projectType=`cat ./config.xml | \
grep '^\s*<\s*App\s*name.*project.*network\s*=\s*\"$networkByte\".*>\s*' | \
sed -E 's/(^.*project\s*=\s*\")(.*)(\"\s*network\s*=\s*\"$networkByte\".*>\s*)/\2/'`
Здесь используется переменная $networkByte, но ее значение не вставляется в команду, как хотелось бы, а вместо этого всовывается строка «$networkByte».
А как сделать, чтобы в команду вставлялось значение переменной?