Пробуя свои силы в написании некоторых скриптов bash, я сталкивался с различным использованием параметра -exec. В моем контексте я использую его после команды find.
В этом руководстве говорится, что нужно использовать {} /; после exec, чтобы передать имя файла и экранировать; так что команда правильно завершается.
Это сообщение на форуме показывает использование '{}' ';' вместо {} /;.
Я опробовал оба метода в Ubuntu 11.04, и только один с одинарными кавычками работает правильно. Есть ли разница между версиями Linux, которая вызывает это? Они взаимозаменяемы? Один предпочтительнее другого?
Ваша оболочка может присвоить последовательности {}
особое значение (в зависимости от типа оболочки, даже если вы находитесь внутри сценария оболочки или нет). Чтобы избежать этого, вы можете заключить его в кавычки '{}'
или экранировать его следующим образом: \{\}
(вам нужно использовать обратную косую черту \
вместо прямой косой черты /
, как вы делали в своем вопросе). [ 1110]
Также обратите внимание, что обычное сообщение об ошибке, если вы делаете это неправильно (например, если вы используете ;
вместо \;
):
find: missing argument to -exec
См. Также соответствующий раздел в справочной странице find
.