I have a script that's supposed to get the list of files of two directories, get differences and execute some code for certain files.
These are the commands to get the file lists:
list_in=$(find input/ -maxdepth 1 - type f | sed 's/input\///' | sort -u); list_out=$(find output/ -maxdepth 1 - type f | sed 's/output\///' | sort -u);
I execute the script in the correct directory, so this shouldn't fail. The unprocessed files are determined by
list_todo=$(comm -23 <(echo "$list_in") <(echo "$list_out"));
since the option
comm only prints lines of the first argument, that don't appear in both arguments and doesn't print lines that uniquely appear in the second argument.
However, only occasionally I get an error saying
command substitution: line 3: syntax error near unexpected token `(' command substitution: line 3: `comm -23 <(echo "$list_in") <(echo "$list_out")'
This really puzzles me, since the exact same script worked fine for the last 3 weeks. I'm using this on a cluster, so several processes might execute the script simultaneously. May the error be caused by this?
Update. The script is called with
./script and I've obviously set
chmod +x script before.
(Disclaimer: Even though I'm working on a cluster and these first three lines of my script don't include any locking mechanisms: Of course, no file is ever processed twice)