https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=252061

            Bug ID: 252061
           Summary: sh does not pass $@ parameters properly
           Product: Base System
           Version: 11.4-RELEASE
          Hardware: Any
                OS: Any
            Status: New
          Severity: Affects Some People
          Priority: ---
         Component: bin
          Assignee: b...@freebsd.org
          Reporter: jguo...@gmail.com

When using $@ to pass parameter, sh supposed to pass every tuple as is.
That is, passing "abc 123" to another sh script, "abc 123" should be intact as
one parameter.

Currently, using $@ and $* to pass parameter from one sh script to another does
not make difference: all parameters are passed as single items.

A simple testing script is appended below and save it to two files -- sh1 and
sh2.
run sh1 with parameters "123 456" "abc def" xyz.
The orignal parameter tuples are 3 shown in sh1 correctly.

According to maunal, $@ should pass "123 456" "abc def" xyz as is (3 tuples).
$* should pass "123 456" "abc def" xyz as 5 items as 123 456 abc def xyz

However, both $@ and $* pass 5 parameters to the sh2.


: ./sh1 "123 456" "abc def" xyz

./sh1 3 tuples
123 456
abc def
xyz

./sh2 5 tuples
123
456
abc
def
xyz

./sh2 5 tuples
123
456
abc
def
xyz

: cat sh1
#!/bin/sh
echo
echo    $0 $# tuples
n=1
while [ $n -le $# ]; do
        eval echo \$$n
        n=$((n+1))
done
[ $0 = sh1 -o $0 = ./sh1 ] &&   ./sh2 $@
[ $0 = sh1 -o $0 = ./sh1 ] &&   ./sh2 $*

-- 
You are receiving this mail because:
You are the assignee for the bug.
_______________________________________________
freebsd-bugs@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/freebsd-bugs
To unsubscribe, send any mail to "freebsd-bugs-unsubscr...@freebsd.org"

Reply via email to