В некоторых скриптах я хочу использовать имена папок внутри текущей папки. Я хочу получить имена папок, и здесь я приведу только проблемную часть. Если я запускаю это из терминала, я получаю:
$ for D in */; do echo ${D%%+(/)} ; done
galaxya8
iphone6s
motog6
motog7
$ echo ${0}
/bin/bash
$ bash --version
GNU bash, version 4.4.19(1)-release (x86_64-pc-linux-gnu)
Однако, если я помещаю это в файл и запускаю файл, я получаю имена с косой чертой:
$ echo 'for D in */; do echo ${D%%+(/)} ; done' >> test.sh
$ bash test.sh
galaxya8/
iphone6s/
motog6/
motog7/
Я видел это расширение bash здесь . Что мне не хватает? Может быть, какое-то значение по умолчанию только для интерактивных оболочек?
Минимальный, полный и проверяемый пример (Спасибо @ kamil-cuk):
$ D=a/; echo ${D%%+(/)}; bash <<<'D=a/; echo ${D%%+(/)}'
a
a/