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

时间:2021-07-21 13:24:18

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 $ 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 argument1
argument1 test.sh ===== I am split line ========
argument1
argument2 argument1 argument2
argument1 argument2 test.sh [root@lamp tmp]#