Как я могу написать Automator Action в Bash с файлами и папками в качестве аргументов?
Вопрос
Когда я создаю 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"