bash на самом деле считает, что через специальную экспортированную переменную SHLVL.
$ echo "$SHLVL"
1
$ bash -c 'echo "$SHLVL"'
2
Если SHLVL равно 2, это не обязательно означает, что родительский процесс - bash, это просто означает что один из предков оболочки также является bash или другим процессом, который экспортировал SHLVL (ksh называет это тоже, я думаю).
Зачем вам нужно знать, является ли родитель вашей оболочки bash?
И нет, нет никаких последствий для запуска оболочки внутри другой оболочки. Это похоже на запуск любой другой команды в оболочке.
info coreutils 'expr invocation' говорит:
16.4 `expr': Evaluate expressions
=================================
`expr' evaluates an expression and writes the result on standard
output. Each token of the expression must be a separate argument.
Operands are either integers or strings. Integers consist of one or
more decimal digits, with an optional leading `-'. `expr' converts
anything appearing in an operand position to an integer or a string
depending on the operation being applied to it.
Однако вы можете использовать bc:
$ a=10.5 b=11.8 c=$(echo "scale=1;$a + $b" | bc -q );echo $c
22.3