На моем компьютере с CentOS 7 у меня есть папка, которая содержит 2 файла с именами, такими как:
myapp-nightly__v3.0-SNAPSHOT__b59__lite.zip
myapp-nightly__v3.0-SNAPSHOT__b59.zip
Эти файлы стираются и генерируются каждую ночь, а число после "b" (впример выше, 59), увеличивается.
Я хочу иметь файл сценария bash, в котором я могу получить в переменной имя файла, в котором нет «_lite»(в приведенном выше примере это было бы «myapp-nightly__v3.0-SNAPSHOT__b59.zip»)
Итак, я сначала попробовал «ls» с глобализацией в терминале, чтобы увидеть, как это работает:
ls myapp-nightly__v3.0-SNAPSHOT__b+([0-9]).zip
Это корректно выводит "myapp-nightly__v3.0-SNAPSHOT__b59.zip".
Затем я попытался создать простой скрипт bash, который запускает указанную выше команду и сохраняет ее вывод в переменной:
#!/bin/bash
MYAPP_KIT_FULL_PATH=$(ls myapp-nightly__v3.0-SNAPSHOT__b+([0-9]).zip)
echo "MYAPP_KIT_FULL_PATH=$MYAPP_KIT_FULL_PATH"
Это дает мне следующую ошибку:
./test.sh: command substitution: line 3: syntax error near unexpected token `('
./test.sh: command substitution: line 3: `ls myapp-nightly__v3.0-SNAPSHOT__b+([0-9]).zip)'
Итак, мой вопрос, как правильно выполнить такую команду "ls" в скрипте bash и сохранить ее выводв переменную?Разве это не работает в bash из-за символов глобуса?
Дополнительные замечания:
- Я знаю, что в сообщении об ошибке указано "строка 3", но я почти уверен, что оно относится к строке2 (строка 3 просто делает эхо).Даже если я полностью удалю строку 3 из сценария (чтобы в сценарии было только 2 строки), он все равно выдает ошибку о строке 3