Использование подстановочного знака в качестве аргумента командной строки в Bash - PullRequest
3 голосов
/ 15 июля 2011

Я пытаюсь написать Bash-скрипт для конвертации файлов.

Предположим, у меня есть каталог /path/to/my files/ с тремя текстовыми файлами: a b.txt, c d.txt и e.txt (обратите внимание на пробелы)

Мне нужно иметь возможность вызвать скрипткак это:

$ ./myscript.sh /path/to/my\ files/*.txt

, а затем перебрать их в bash, чтобы обработать их следующим образом:

dest='/desktop/'
for ARG in $@; do
  /some/other/script $ARG $dest$ARG.new
done

Это не обязательно должно работать именно так, как проще всего, что будетдают похожие результаты

Ответы [ 2 ]

5 голосов
/ 15 июля 2011

Делает ли это то, что вам нужно:

dest='/desktop/'
for ARG in "$@"; do
  /some/other/script "$ARG" "$dest$ARG.new"
done

РЕДАКТИРОВАТЬ: Чтобы удалить путь на ARG

dest='/desktop/'
for ARG in "$@"; do
  /some/other/script "$ARG" "$dest$(basename "$ARG").new"
done
1 голос
/ 15 июля 2011

Перед выполнением команды Bash выполняет подстановочный знак, то есть заменяет это выражение списком соответствующих файлов.

...