return code before grep
May 15th, 2009
6 comments
In my previous post hide-password-from-ps-output-sql-loader I mentioned a way to pass the password to the loader thru a parameter file. As correctly suggested by Brian Tkatch, the password could be passed as standard input
sqlldr control=x.ctl silent=header,feedback <<EOF
scott/tiger
EOF
Username:
The Username: prompt is displayed
How do we get rid of this ?
sqlldr control=x.ctl silent=header,feedback <<EOF | grep -v "^Username:"
scott/tiger
EOF
There is no output. But what’s the error code
echo $?
1
The return code is 1
This is not the error code from sqlldr, but the error code from grep !
Ok, here is the trick, a bit cryptic if you are not familiar with file descriptors
( ( (sqlldr control=x <<EOF;echo $? >&3) |grep -v "^Username:" >&4 ) 3>&1 |(read x;exit $x) )4>&1
scott/tiger
EOF
echo $?
0
The return code is 0