Сценарий Bash для чтения файлов в каталоге [duplicate]

Это чистое решение для JavaScript без каких-либо библиотек или плагинов:

document.addEventListener('click', function (e) {
    if (hasClass(e.target, 'bu')) {
        // .bu clicked
        // Do your thing
    } else if (hasClass(e.target, 'test')) {
        // .test clicked
        // Do your other thing
    }
}, false);

, где hasClass -

function hasClass(elem, className) {
    return elem.className.split(' ').indexOf(className) > -1;
}

Live demo

Кредит относится к Dave и Sime Vidas

Использование более современных JS, hasClass может быть реализовано как:

function hasClass(elem, className) {
    return elem.classList.contains(className);
}

17
задан codeforester 22 March 2017 в 23:22
поделиться

2 ответа

Используйте read -d '' -r file и установите IFS только для контекста read:

find people -name '*.svg' -print0 | while IFS= read -d '' -r file; do
    grep '<image' "$file" > /dev/null && echo "$file" | tee -a embeded_images.txt;
done

И укажите ваши переменные.

20
ответ дан Dennis Williamson 19 August 2018 в 13:44
поделиться

Хотя ответ Денниса Уильямсона абсолютно правильный, он создает подоболочку , что помешает вам установить какие-либо переменные внутри цикла. Вы можете рассмотреть возможность замены процесса следующим образом:

while IFS= read -d '' -r file; do
    grep '<image' "$file" > /dev/null && echo "$file" | tee -a embeded_images.txt
done < <(find people -name '*.svg' -print0)

Первый < указывает, что вы читаете из файла, а <(find...) заменяется именем файла (обычно это дескриптор труба), которая возвращает результат из find напрямую. Поскольку while читается из файла вместо канала, ваш цикл может устанавливать переменные, доступные из-за пределов области видимости.

22
ответ дан John Kugelman 19 August 2018 в 13:44
поделиться
  • 1
    К сожалению, это не будет работать в BusyBox 1.29.0 – deajan 4 June 2018 в 14:19