Это похоже на ошибку в Bash 3.2.
Я не могу найти запись в журнале изменений , которая бы прямо соответствовала этому. Есть только расплывчатое упоминание об изменении поведения параметра errexit
для соответствия консенсусу POSIX (пункт l
в переходе с bash -4.0 -rc1 на bash -4.0 -выпуск ).
Это может быть связано, так как есть аналогичная проблема с errexit
, это не вызывает ее в Bash 3.2, но делает в Bash 4.0 (она не должна ничего печатать, так как оболочка должна выйти, когда команда подоболочки терпит неудачу):
$./bash3.2 -c 'set -e; (exit 1); echo end.'
end.
Обратите внимание, что проблема здесь, похоже, в подоболочке, так как она работает в обеих версиях:
$./bash3.2 -c 'trap "echo ERROR" ERR; false'
ERROR
Простое решение состоит в том, чтобы переместить файлы.zip в сторону с помощью mkdir и mv , скопировать остаток с помощью cp , затем восстановить файл. zip файлы в исходное место с помощью mv и rmdir .
cd SOURCE && mkdir ~/dELETEmE && mv *.zip ~/dELETEmE && cp * DESTINATION
cd ~/dELETEmE && mv * SOURCE && cd.. && rmdir dELETEmE
Не знаю, нужно ли использовать только cp
, но если вы используете bash и уверены, что ваши файлы не имеют пробелов в своих именах, может быть, так?
Внутри исходного пути
cp $(ls | grep -v *.zip) /destination/path