Как я могу написать действие Automator в bash с файлами и папками в качестве аргументов? - PullRequest
0 голосов
/ 30 января 2010

Когда я создаю действие Automator в XCode с использованием Bash, все файлы и пути к папкам печатаются на стандартный ввод.

Как получить содержимое этих файлов?Что бы я ни пытался, я получаю только имя файла в выходных данных.

Если я просто выберу «Выполнить сценарий оболочки», я могу выбрать, хочу ли я все в stdin или в качестве аргументов.Можно ли это сделать для проекта XCode?

Практически проще использовать Applescript, и пусть это запускает Bash.

Я пробовал что-то вроде

xargs | cat | MyCommand

Ответы [ 2 ]

0 голосов
/ 30 января 2010

Что там делает труба между xargs и cat? Попробуйте

xargs cat | MyCommand

или, что лучше,

xargs -R -1 -I file cat "file" | MyCommand

для правильной обработки имен файлов с пробелами и т. Д.

Если вместо этого вы хотите, чтобы MyComand вызывался для каждого файла,

local IFS="\n"
while read filename; do
  MyCommand < $filename
done

также может быть полезным.

0 голосов
/ 30 января 2010

read будет читать строки из stdin скрипта; просто убедитесь, что для $IFS установлено значение, которое не будет мешать, если имена путей отправляются без обратной косой черты, не выходя из пробелов:

OLDIFS="$IFS"
IFS=$'\n'
while read filename ; do
  echo "*** $filename:"
  cat -n "$filename"
done
IFS="$OLDIFS"
...