ошибка bash zip: неверные аргументы команды (короткая опция '\' не поддерживается)

Esto se puede hacer usando "sed" como se muestra:

sed -ne 'y/{}/\n\n/;/^\s/D;/./P;D' input.file

donde el combo P;D establece un ciclo implícito y durante el cuerpo del ciclo nos aseguramos de imprimir campos no -vacíos.

En líneas similares:

perl -lne 'print for grep /\H/, split /{|}/' input.file

donde dividimos el registro, luego filtramos los campos no vacíos y los imprimimos uno/línea en un bucle for.

2
31.07.2019, 22:53
1 ответ

Попробуйте:

for dir in ~/Documents/CMDsh/*/
do
    countFolder=$((countFolder+1))
    dir=${dir%*/}
    nameFolder=${dir##*/}
    zip -r -j -9 ~/osuLazerBeatmap/"$nameFolder".zip "$dir"/*
    echo '------------------------------';
done

Примечания:

  1. Всегда заключайте ссылки на переменные оболочки в двойные -кавычки. В данном случае это означало замену:

    zip -r -j -9 ~/osuLazerBeatmap/$nameFolder.zip $dir/*
    

    с

    zip -r -j -9 ~/osuLazerBeatmap/"$nameFolder".zip "$dir"/*
    

    Это избавляет от необходимости пытаться экранировать эти три строки кода sed.

    Единственным исключением из этого правила является то, что вы явно хотите разбиения слов или расширения имени пути .

  2. Пример может помочь. Рассмотрим простой пример с директорией с одним файлом:

    $ ls
    Sensation (TV Size)
    

    Давайте создадим переменную оболочки:

    $ f='Sensation (TV Size)'
    

    Теперь давайте попробуем использовать переменную оболочки без кавычек:

    $ ls $f
    ls: cannot access 'Sensation': No such file or directory
    ls: cannot access '(TV': No such file or directory
    ls: cannot access 'Size)': No such file or directory
    

    Обратите внимание, насколько лучше это работает, когда переменная оболочки заключена в кавычки:

    $ ls "$f"
    Sensation (TV Size)
    

    При заключении переменной оболочки в кавычки экранирование не требуется.

  3. Оболочка интерпретирует конец строки как конец команды. Таким образом, хотя точки с запятой в конце строки и не мешают, они излишни.

3
27.01.2020, 22:02

Теги

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