Это обычно работает; например попробовать
P=$(echo $PATH)
в случае сомнений - используйте фигурные скобки $ {PATH} и / или экранированные "- как для управления одним аргументом с пробелами или чем-то, что расширяется, и его пробелы рассматриваются как разделители между аргументами. ( путь не нужен в вашем примере, если мы предполагаем, что у нас нет имен файлов и что не с пробелами в них).
В качестве более крупного примера рассмотрим:
#!/bin/sh
dev=$(echo /dev/null)
if [ $(cat $dev | wc -l) = "0" ]; then
echo Fine
exit 0
else
echo Now that is a surprize
fi
exit 1
который при запуске дает нам
beeb-2:~ dirkx$ sh xx.sh
Fine
или более сложный:
beeb-2:~ dirkx$ sh -x xx.sh
++ echo /dev/null
+ dev=/dev/null
++ cat /dev/null
++ wc -l
+ '[' 0 = 0 ']'
+ echo Fine
Fine
+ exit 0
так что это должно помочь вам найти проблему. Вы уверены, что нет места или транспозиции?