Я не знаком с сингулярностью, так что это предположение, но я думаю, что ваш скрипт запускается из оболочки, отличной от bash (может быть, dash?).${var: number}
- нестандартное расширение синтаксиса расширения переменной;bash и несколько других оболочек поддерживают его, другие (например, dash) - нет.
Если единственной причиной теста является выяснение, заканчивается ли переменная символом "/", чтобы вы могли удалить ее, если она есть, не беспокойтесь.Это стандартный синтаксис POSIX, который удалит «/» из конца переменной , если переменная оканчивается на «/»:
MY_DIR_PATH=${MY_DIR_PATH%/}
Если вам действительно нужноtest, используйте это вместо:
if [ "${MY_DIR_PATH%/}" != "${MY_DIR_PATH}" ]; then
Объяснение: При этом переменная с "/" удаляется с конца до исходного значения;если они разные, в конце должно быть "/".