1

Если я rm main!(.tex|.pdf) в терминале bash, он удалит все файлы, которые начинаются с main но не заканчиваются на .tex или .pdf , и очистит различные ненужные файлы, разбросанные наборщиками LaTeX. ,

Следующий скрипт оболочки, однако, не делает то, что я ожидаю, когда помещается в файл и затем запускается

#!/bin/bash

rm main!(.tex|.pdf)

Синтаксическая ошибка сообщается в ( токене. Что дает? Что такое канонический способ сделать что-то подобное в рамках сценария bash. Есть ли более элегантный способ сделать это, чем принуждение find решение проблемы?

1 ответ1

2

Если шаблон не работает при запуске из сценария, убедитесь, что параметр extglob установлен для неинтерактивного использования.

Просто положи

#!/usr/bin/env bash
shopt -s extglob

в верхней части вашего сценария после hashbang. Так легко заметить. Смотрите также: Glob - Wiki Грега

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .