Question

When I create a Automator action in XCode using Bash, all files and folder paths are printed to stdin.

How do I get the content of those files? Whatever I try, I only get the filename in the output.

If I just select "Run shell script" I can select if I want everything to stdin or as arguments. Can this be done for an XCode project to?

It's almost easier to use Applescript, and let that run the Bash.

I tried something like

xargs | cat | MyCommand
Was it helpful?

Solution

What's the pipe between xargs and cat doing there? Try

xargs cat | MyCommand

or, better,

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

to properly handle file names with spaces etc.

If, instead, you want MyComand invoked on each file,

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

may also be useful.

OTHER TIPS

read will read lines from the script's stdin; just make sure to set $IFS to something that won't interfere if the pathnames are sent without backslashes escaping any spaces:

OLDIFS="$IFS"
IFS=$'\n'
while read filename ; do
  echo "*** $filename:"
  cat -n "$filename"
done
IFS="$OLDIFS"
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top