Ok folks, here's how I solved the abovementioned issue.
a)Foolish me, I've never checked the script file using vi. By saving the script using notepad++ in M$ windows, ^M carriage return character was added in the end of each line (In notepad++ the correct filetype was selected "Unix Script File"). [See picture]
My solution: Edited the file with vi by removing the extra \cr character and the script started to run correctly. See also at the bottom of the screenshot for the filename (was "TestScript"). RUT955 stores the uploaded script files in weird places other than the usual. To discover where your uploaded script files are, in CLI or via SSH run:
find . -type f -name "*.sh"
from your root folder. You will see your uploaded scripts in two places. I've picked to edit the top one on the list. (Can't remember right now the correct path, sorry!)
b) Reading the I/O ports statuses and pass them as an argument. Now that was just trial and error. Long story short, RUT955 passes a single string argument to the script even if you type multiple arguments to the arguments field. It is still a single argument. And by that the solution was to write a quite long text, something like, "bla bla bla sensor A %g1 (High=On, Low=Off), other bla bla sensor B %g3 (High=On, Low=Off) and bla bla bla Voltage reading %g6VDC". It worked like a charm. Crude but charming. Why? Cause you can't manipulate the returned I/O ports readings and place them in the Telegram text body as you like. Also as you can see in the picture the text argument in the script is just {$1} which simply means "the first argument" that was passed to the script from RUT995. I'm sure there is a limit to the string length but haven't found it yet. I leave that to the bold ones to discover.
Hope I've helped someone