В консоли пользователя У меня есть bash
:Bash работает только в интерактивной оболочке, но не в сценарии
$ echo $SHELL
/bin/bash
$ bash --version
GNU bash, version 4.2.46(1)-release (x86_64-redhat-linux-gnu)
У меня есть код в файле test.sh:
$ cat test.sh
aaa='---aa-aa---'
echo "${aaa}"
echo 'does not work...'
# trim "-"
echo ${aaa/+(-)}
echo ${aaa%%+(-)}
echo 'works for one symbol...'
echo ${aaa%-}
echo ${aaa/-}
последние две строки работайте хорошо, но предыдущие.
$ bash test.sh
---aa-aa---
does not work...
---aa-aa---
---aa-aa---
works for one symbol...
---aa-aa--
--aa-aa---
В то же время, если бы вы попытаетесь сделать эту консоль он работает:
$ aaa='---aa-aa---'
$ echo ${aaa/+(-)}
aa-aa---
$ echo ${aaa%%+(-)}
---aa-aa
Итак, почему он не работает в сценарии?
Попытка решить, следует ли закрыть это как дубликат https://stackoverflow.com/questions/26726264/why-does-the-pattern-work-in-my-interactive-shell-but-not-a- сценарий, или сделать это наоборот. @ tripleee, у вас есть мнение здесь? –
... на самом деле, по мнению, я думаю, что этот вопрос вопроса более четко задан, чем другой, достаточно, чтобы отрицать временное преимущество другого (от первого запроса). –