Discussion:
1. Will the following only print the text "I FOUND A MATCH" to standard output when the grep is successful?
if grep "mrichard" /etc/passwd; then echo "I FOUND A MATCH"; fi
2. Does the following command send both standard output and standard error to the same file for the command cmd1?
cmd1 2>&1 >outfile
3. Does cmd2 receive both the standard error and standard output of cmd1 as standard input?
cmd1 2>&1 | cmd2
4. Will the script below always print out the text 'They are the same' assuming the script ran under the Bourne shell?
#!/bin/sh
infile=${0}
if [ ! -s "$infile" ]
then
exit 1
fi
linecnt=`wc -l $infile | while read cnt rest
do
echo $cnt
done`
mycnt=0
while read line
do
mycnt=`expr $mycnt + 1`
done < $infile
if [ $linecnt -eq $mycnt ]
then
echo They are the same
else
echo They are different.
fi
5. Does the standard output of this script get sent to STDOUT?
#!/bin/sh
exec 4>&1
exec 1>&2
exec 2>&4
exec 4>&-
echo Hello
echo More text
6. Is the visible output of this script, the text 'Hello'?
#!/bin/sh
(
exec 4>&2
exec 2>&1
exec 1>&4
exec 4>&-
echo Hello
) 2> /dev/null