linux $@和$*区别

最近学习shell编程,发现 $@和$*很有意思,分享一下

$* 取当前shell的所有参数,将所有的命令行视为单个字符串,相当于“$1$2”
$@ 取当前shell的所有参数保留参数里的空白,,相当于“$“,”$2”,这是将参数传递给其他程序的最佳方式。

例子:

        [root@localhost python]# set -- "I am" handsome oldboy.
        [root@localhost python]# echo $#
        3
        [root@localhost python]# for i in $*;do echo $i;done
        I
        am
        handsome
        oldboy.
        [root@localhost python]# for i in $@;do echo $i;done
        I
        am
        handsome
        oldboy.
        [root@localhost python]# for i ;do echo $i;done
        I am
        handsome
        oldboy.
        [root@localhost python]# for i in "$@";do echo $i;done
        I am
        handsome
        oldboy.
        [root@localhost python]# for i in "$*";do echo $i;done
        I am handsome oldboy.

你可能感兴趣的:(Linux)