传递参数

获取参数

使用$n获取参数

#!/bin/bash

main() {
  echo "-----"
  echo "当前文件名" $0
  echo "-----"
  echo "参数一" $1
  echo "参数一" $2
  echo "参数一" $3
  echo "-----"
  echo "所有变量" $*
  echo "所有变量" $@
  echo "-----"
  echo "当前pid" $$
  echo "后台最后一个进程的pid" $!
  echo "最后命令的退出状态" $?
  echo "-----"
}

main 'hello' 'world' '!'
-----
当前文件名 /Users/lcc/Desktop/test.sh
-----
参数一 hello
参数一 world
参数一 !
-----
所有变量 hello world !
所有变量 hello world !
-----
当前pid 57116
后台最后一个进程的pid
最后命令的退出状态 0
-----

特殊的参数

参数

说明

$#

当前的参数个数

$0

当前的文件名

$$

当前脚本的进程ID

$!

后台运行的最后一个进程的ID号

$*

以一个单字符串显示所有向脚本传递的参数。 如"$*"用「"」括起来的情况、以"$1 $2 … $n"的形式输出所有参数。

$@

与$*相同,但是使用时加引号,并在引号中返回每个参数。 如"$@"用「"」括起来的情况、以"$1" "$2" … "$n" 的形式输出所有参数。

$?

显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误。

$* 与 $@ 区别:

  • 相同点:都是引用所有参数。

  • 不同点:只有在双引号中体现出来。假设在脚本运行时写了三个参数 1、2、3,,则 " * " 等价于 "1 2 3"(传递了一个参数),而 "@" 等价于 "1" "2" "3"(传递了三个参数)。

Last updated