shell中的特殊变量和函数传参

shell中的特殊变量

  $? :上一个命令的执行状态返回值

  $#::参数的个数

  $*:参数列表,所有的变量作为一个字符串

  $@:参数列表,每个变量作为单个字符串

  $1-9,${10}:位置参数

  $$:脚本的进程号

  $_:之前命令的最后一个参数

  $0:脚本的名称

  $!:运行在后台的最后一个进程ID

那么问题来了,这些特殊的变量怎么传递到shell中定义函数中去呢?

   一个脚本说明问题

[root@lamp tmp]# cat test.sh 
#!/bin/sh

func ()
{
        echo "$1"
        echo "$2"
        echo "$#"
        echo "$*"
        echo "$@"
        echo "$?"
        echo "$0"
        echo "$$"
}

func $1

echo ===== I am split line ========

        echo "$1"
        echo "$2"
        echo "$#"
        echo "$*"
        echo "$@"
        echo "$?"
        echo "$0"
        echo "$$"
[root@lamp tmp]# sh test.sh argument1 argument2
argument1

1
argument1
argument1
0
test.sh
3231
===== I am split line ========
argument1
argument2
2
argument1 argument2
argument1 argument2
0
test.sh
3231
[root@lamp tmp]# 
原文地址:https://www.cnblogs.com/along1226/p/5003930.html