Shell 传递参数

一、参数传递

执行 Shell 脚本时,向脚本传递参数,脚本内获取参数的格式:$n

n 代表一个数字,1为执行脚本的第一个参数,2为执行脚本的第二个参数,以此类推......


实例:

向脚本传递三个参数,其中 $0 为文件名(包含文件路径)。

Shell 脚本:

#!/bin/bash
echo "Shell传递参数实例:"
echo "执行的文件名:$0"
echo "第一个参数:$1"
echo "$2"
echo "$3"

执行脚本:

sh test.sh 1 2, 3

输出结果:

Shell传递参数实例:
执行文件名:test.sh
第一个参数:1
2,
3


二、处理参数的特殊字符


$#:传递脚本的参数个数

$*:传递脚本的所有参数

$$:传递当前进程ID号

$!:传递后台运行的最后一个进程ID号

$@:与$*相同,传递脚本的所有参数


Shell 脚本:

#!/bin/bash

echo "参数个数:$#"
echo "所有参数:$*"
echo "进程ID号:$$"
echo "后台最后一个进程ID号:$!"
echo "所有参数:$@"

执行脚本:

sh test.sh 1, 2, 3

运行结果:

参数个数:3
所有参数:1, 2, 3
进程ID号:2902
后台最后一个进程ID号:
所有参数:1, 2, 3

$* 与 $@区别

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

Shell 脚本:

#!/bin/bash


echo "--$*--"
for i in "$*"; do
	echo $i
done


echo "--$@--"
for i in "$@"; do
	echo $i
done

执行脚本:

sh test.sh 1, 2, 3

运行结果:

--$*--
1, 2, 3
--$@--
1,
2,
3
原文地址:https://www.cnblogs.com/keye/p/15218522.html