The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



"Доступен ShellCheck 0.9, статический анализатор для shell-скриптов"
Версия для распечатки Пред. тема | След. тема
Форум Разговоры, обсуждение новостей
Исходное сообщение [ Отслеживать ]
Заметили полезную информацию ? Пожалуйста добавьте в FAQ на WIKI.
. "Доступен ShellCheck 0.9, статический анализатор для shell-ск..." +/
Сообщение от Аноним (174), 31-Дек-22, 21:11 
Файл находится в 5.1 и не находится в 5.2? И при чём тут файл, если баш не пытается выполнять этот код, который ему не нравится? В этом у баша большая проблема, если ему что-то не нравится, приходится играть в угадайку. Технически этот код подстановки заранее неизвестного имени даже не использовался, потому что скрипту надо передать каталог вместо файла и это никогда так и не использовалось. Но, я уверен, что он корректный и всё работает, как и ожидалось, специально это проверил. Тут большая проблема, что extglob не работает корректно с @ в имени. Просто внезапно баш после обновления решил, что надо использовать обратные кавычки тут. Выглядит 100% как баг, или регрессия.

Вот полный пример кода, в котором $() не работает, но кавычки работают как и с 5.1.

#!/bin/env bash

process_dirname(){
    local pext='@(*.mkv|*.mp4|*.avi)'
    shopt -s extglob
    fname=$(shopt -s failglob;shopt -s nocaseglob;echo "${fname}"/?("123")"qwe"$pext)
    [[ 0 -ne $? ]] && echo '#glob match failed' && exit 1
    shopt -u extglob

    if [[ ! -f "${fname}" ]];then
        echo "new filename ${fname@Q} couldn't be located, didn't guess the filename correctly"
        exit 1
    fi
    echo "# filename for ${file@Q} changed to ${fname@Q}"
}

file="$@"
[[ -n "${file}" ]] || { echo -e "Usage:\t$0 FILENAME"; exit 1; }

fname="${file##*/}"
fpath="${file%/*}"
[[ -d "${fname}" ]] && process_dirname

Ещё раз, дело именно в синтаксической ошибке от $(?()) и не в чём-либо ещё.

Ответить | Правка | Наверх | Cообщить модератору

Оглавление
Доступен ShellCheck 0.9, статический анализатор для shell-скриптов, opennews, 27-Дек-22, 12:01  [смотреть все]
Форумы | Темы | Пред. тема | След. тема



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру