Shell - 学习笔记 - 2.5 - Shell特殊变量:Shell $#、$*、$@、$?、$$

本文详细介绍了Shell中的特殊变量,如$0(脚本文件名)、$n(位置参数)、$#(参数数量)、$*(所有参数)、$@(所有参数,双引号内行为差异)、$?(上个命令状态)和$$(当前进程ID)。通过示例展示了如何在脚本和函数中使用这些变量。
摘要由CSDN通过智能技术生成

前面讲到了 $n,它是特殊变量的一种,用来接收位置参数。下面将继续讲解剩下的几个特殊变量,它们分别是:$#、$*、$@、$?、$$。

Shell 特殊变量及其含义

变量

含义

$0

当前脚本的文件名。

$n(n≥1

传递给脚本或函数的参数。n 是一个数字,表示第几个参数。例如,第一个参数是 $1,第二个参数是 $2。

$#

传递给脚本或函数的参数个数。

$*

传递给脚本或函数的所有参数。

$@

传递给脚本或函数的所有参数。当被双引号" "包含时,$@ 与 $* 稍有不同,将在”Shell $*和$@的区别“一节中详细讲解。

$?

上个命令的退出状态,或函数的返回值,我们将在"Shell $?" 一节中详细讲解。

$$

当前 Shell 进程 ID。对于 Shell 脚本,就是这些脚本所在的进程 ID。

下面通过两个例子来演示。

1) 给脚本文件传递参数

编写下面的代码,并保存为 test.sh:

#!/bin/bash

echo "Process ID: $$"

echo "File Name: $0"

echo "First Parameter : $1"

echo "Second Parameter : $2"

echo "All parameters 1: $@"

echo "All parameters 2: $*"

echo "Total: $#"

运行 test.sh,并附带参数:

[mozhiyan@localhost demo]$ . ./test.sh Shell Linux

Process ID: 5943

File Name: bash

First Parameter : Shell

Second Parameter : Linux

All parameters 1: Shell Linux

All parameters 2: Shell Linux

Total: 2

上面使用source命令在本进程内读取脚本并执行,所以文件名显示的是bash。如果直接调用脚本文件执行,或者显示调用bash命令来执行这个脚本文件,输出的就是文件名。后面两种都是会启动新进程。

$./test.sh Shell Linux

Process ID: 5976

File Name: ./test.sh

First Parameter : Shell

Second Parameter : Linux

All parameters 1: Shell Linux

All parameters 2: Shell Linux

Total: 2

2) 给函数传递参数

编写下面的代码,并保存为 test.sh:

#!/bin/bash

#定义函数

function func(){

    echo "Language: $1"

    echo "URL: $2"

    echo "First Parameter : $1"

    echo "Second Parameter : $2"

    echo "All parameters 1: $@"

    echo "All parameters 2: $*"

    echo "Total: $#"

}

#调用函数

func Java http://c.biancheng.net/java/

运行结果为:

Language: Java

URL: http://c.biancheng.net/java/

First Parameter : Java

Second Parameter : http://c.biancheng.net/java/

All parameters 1: Java http://c.biancheng.net/java/

All parameters 2: Java http://c.biancheng.net/java/

Total: 2

在脚本的函数里,使用$0,显示的是当前的脚本文件名。

参考:

Shell特殊变量:Shell $#、$*、$@、$?、$$ (biancheng.net)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

夜流冰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值