Как я могу написать Automator Action в Bash с файлами и папками в качестве аргументов?

StackOverflow https://stackoverflow.com/questions/2169206

  •  24-09-2019
  •  | 
  •  

Вопрос

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

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

Если я просто выберу «запустить Shell Script», я могу выбрать, если я хочу все для stdin или в качестве аргументов. Это может быть сделано для проекта Xcode?

Очень проще использовать AppleScript и позволить этому запустить bash.

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

xargs | cat | MyCommand
Это было полезно?

Решение

Что такое труба между xargs а также cat делать там? Пытаться

xargs cat | MyCommand

или лучше,

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

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

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

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

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

Другие советы

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

OLDIFS="$IFS"
IFS=$'\n'
while read filename ; do
  echo "*** $filename:"
  cat -n "$filename"
done
IFS="$OLDIFS"
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top