Вопрос В чем разница между -exec с '{}' ';' и -exec с {} / ;?


Пробовав мою руку при написании сценариев bash, я столкнулся с различным использованием параметра -exec. В моем контексте я использую его после команды find.

Это руководство состояния использовать {} /; после exec, чтобы передать имя файла и избежать; так что команда правильно завершается.

Это сообщение форума показывает использование '{}' ';' вместо {} /;.

Я опробовал оба метода на Ubuntu 11.04, и только один с одинарными кавычками работает правильно. Есть ли разница между версиями Linux, которая вызывает это? Являются ли они взаимозаменяемыми? Один из них предпочтительнее другого?


3
2018-04-12 15:35


происхождения




ответы:


Ваша оболочка может назначить последовательность {} особое значение (в зависимости от типа оболочки и даже если вы находитесь внутри сценария оболочки или нет). Чтобы этого избежать, вы можете заключить его в кавычки '{}' или бежать так: \{\} (вам нужно использовать обратную косую черту \ вместо прямой косой черты / как вы это делали в своем вопросе).

Также обратите внимание, что обычное сообщение об ошибке, если вы делаете это неправильно (например, если вы используете ; вместо \;) является:

find: missing argument to -exec

См. Также соответствующий раздел в findman-страница,


3
2018-04-12 16:20



Можете ли вы объяснить «в зависимости от типа оболочки и даже если вы находитесь в сценарии оболочки или нет»? найти (1) говорит: «Обе эти конструкции, возможно, должны быть экранированы (с« \ ») или процитированы, чтобы защитить их от расширения оболочкой», но это кажется неправильным {}, Существуют ли раковины, которые лечат {} специально? Расширение скобки не влияет на пустые {}, эксперты казаться не цитировать, - Eliah Kagan