[LTP] test.sh and ROD redirection

Alexey Kodanev alexey.kodanev@oracle.com
Mon Jan 25 17:26:54 CET 2016


Hi,
On 01/25/2016 04:45 PM, Cyril Hrubis wrote:
> Hi!
>> Another option would be inventing our special syntax for redirecting for
>> ROD. Use for example % and threat it like > i.e. split $@ on % and
>> redirect the output to whatever is found after % which shouldn't be
>> much more complicated than separating last parameter from $@...
> What about this one:
>
> diff --git a/testcases/lib/test.sh b/testcases/lib/test.sh
> index 074be74..ef2af14 100644
> --- a/testcases/lib/test.sh
> +++ b/testcases/lib/test.sh
> @@ -214,7 +214,29 @@ ROD_SILENT()
>   
>   ROD()
>   {
> -	$@
> +	local cmd
> +	local arg
> +	local file
> +	local flag
> +
> +	for arg; do
> +		if [ "$arg" == ">" ]; then

I would change it to
         if [ "${arg:0:1}" == ">" ]; then
                 arg=${arg:1}

in case '\>' is not separated by space.

e.g.:
ROD echo a \>/proc/cpuinfo

> +			flag=1
> +			continue
May be break here, so we don't need the next if block.

> +		fi
> +
> +		if [ -n "$flag" ]; then
> +			break
> +		fi
> +		cmd="$cmd $arg"

But what if the rest of args has something else, e.g. 2>&1 ?

> +	done
> +
> +	if [ -n "$flag" ]; then
> +		$cmd > $arg
> +	else
> +		$@
> +	fi
> +
>   	if [ $? -ne 0 ]; then
>   		tst_brkm TBROK "$@ failed"
>   	fi
>
>
> It's called as: 'ROD echo a \> b', the reason for choosing \> is that
> the error message will contain '>' instead of some strange char as %.
>
> I.e. doing 'ROD echo a \> /proc/cpuinfo' yields:
>
> test.sh: line 235: /proc/cpuinfo: Permission denied
> foo 1 TBROK : echo b > /proc/cpuinfo failed

Best regards,
Alexey


More information about the Ltp mailing list