I have tried Googling for info on this, but there are a lot of false hits ...
I want to run bash scripts on a Cygwin-running system. The problem is that (so far as I know) I cannot control the format of the scripts -- Rational Build Forge writes each line of the script with a trailing carriage return and then invokes the script with the environment that it wants to put out there. Although it's not documented in "man bash" on the latest Cygwin, I did find "set -o igncr" and it seems to work well. But I'm just curious about why my first attempt didn't work. This is a test script with CR-LF lines that I ran on my own box. #! /bin/bash -- set -x # echo "$IFS" | od -t x1 -a # IFS="$IFS"$'\r' # echo "$IFS" | od -t x1 -a # # set -o igncr 2>/dev/null || true # echo "Hello, world!" pwd ls -l | head exit 0 The trailing #s are to prevent problems with carriage returns before I can do something about them. But the output is $ ./128.bash + echo ' ' + od -t x1 -a 0000000 20 09 0a 0a sp ht nl nl 0000004 + IFS=' ' + echo ' ' + od -t x1 -a 0000000 20 09 0a 0d 0a sp ht nl cr nl 0000005 + $'\r' ./128.bash: line 8: $'\r': command not found ' echo 'Hello, world! Hello, world! + $'pwd\r' ./128.bash: line 10: $'pwd\r': command not found + ls -l + $'head\r' ./128.bash: line 11: $'head\r': command not found + exit $'0\r' : numeric argument required0 The "od" calls are intended to show that the carriage returns are getting in there, but the following error messages are showing that IFS apparently has no effect, despite the man page saying IFS The Internal Field Separator that is used for word splitting after expansion and to split lines into words with the read builtin command. The default value is ``<space><tab><newline>''. Anyone have any ideas on why IFS doesn't work to deal with carriage returns? (Note that adding carriage return to IFS is still an inferior notion to "set -o igncr". IFSing would effectively put a space at the end of each line, so I expect that line arg1 arg2 arg3 \ arg4 arg5 would not work. I would also exspect here-documents like some pipe <<EOF line1 line2 EOF would need their carriage returns stripped. In contrast, "set -o igncr" strips carriage returns even in these contexts, so they work as-is. I'm asking about IFS merely because I'm curious.) -- Tim McDaniel, t...@panix.com -- Problem reports: http://cygwin.com/problems.html FAQ: http://cygwin.com/faq/ Documentation: http://cygwin.com/docs.html Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple