Почему в разрешении отказано с последним номером n?

mkdir -p error_folder &&
for json in./*.json; do
    if jq -e '.. | select(type == "array" and length == 0)' "$json" >/dev/null
    then
        mv "$json" error_folder/
    fi
done

Это более или менее тот же подход, который использовал Роман в своем ответе , но использует другое jqвыражение.

Выражение ..|select(type == "array" and length == 0)рекурсивно рекурсирует полную структуру JSON и выберет все ее биты, которые являются массивами нулевой -длины (в любом месте, на любой глубине ).

Если select()выполнено успешно, то jqзавершится с нулевым статусом выхода (успех ), что означает, что документ JSON содержит где-то пустой массив (или файл полностью пуст ). Это инициирует перемещение документа в error_folderв сценарии.


Из комментариев ниже видно, что пользователя интересует только массив WarehouseActivity.

Мой код с измененным jqвыражением:

mkdir -p error_folder &&
for json in./*.json; do
    if jq -e '.. |.WarehouseActivity? | select(type == "array" and length == 0)' "$json" >/dev/null
    then
        mv "$json" error_folder/
    fi
done
0
08.05.2020, 14:56
2 ответа

Я решил это

sudo mkdir -p /usr/local/n && chown -R $(whoami) /usr/local/n/

И

sudo chown -R $(whoami) /usr/local/bin /usr/local/lib /usr/local/include /usr/local/share
1
28.04.2021, 23:15

В этой статье описаны проблемы, с которыми вы сталкиваетесь, а также ПРАВИЛЬНЫЙ способ их устранения. Вы всегда должны избегать запуска sudo, где это возможно.

https://guillermo.at/update-node-proper-way

Чтобы обновить npm:

npm i -g n
N_PREFIX=$HOME/.local n stable
1
28.04.2021, 23:15

Теги

Похожие вопросы