shell脚本:预定义变量

本文深入解析了Shell脚本中的预定义变量,包括*$*、$#、$@、$$、$?、$!的含义及使用场景,通过实例对比$*与$@的区别,帮助读者掌握变量在不同情况下的正确应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

预定义变量

有些变量是一开始执行Script脚本时就会设定,且不能被修改,我们叫他们为预定义变量。这些变量当一执行程序时就有了,以下是一些预定义变量:


==$* :表示所有位置参数的内容,即以一个字符串显示所有向脚本传递的参数;$* 以"$1 $2 … $n"的形式输出所有参数

$#:表示命令行中位置参数的个数,传递到脚本的参数个数

$@:与$*相同,$@以"$1" “2"…"2" … "2""n” 的形式输出所有参数

$$:当前进程的进程号PID

$?:显示上一条命令的退出状态;0表示没有错误,其他任何值表明有错误

$! :后台运行的最后一个进程的进程号pid


举一个例子,可以帮助理解
脚本内容:

#!/bin/bash
echo	"$1 $2 $3 $4 $5"
echo	"脚本名称:$0"
echo	"参数列表1:$*"
echo	"参数列表2:$@"
echo	"参数个数:$#"
echo	"当前进程号:$$"
echo	"命令执行结果:$?"

执行结果:

[root@linus ~]# sh yu.sh 1 2 3 4 5
1 2 3 4 5
脚本名称:yu.sh
参数列表1:1 2 3 4 5
参数列表2:1 2 3 4 5
参数个数:5
当前进程号:1951
命令执行结果:0

$*与$@区别

$*与$@的区别,只有在双引号中才能体现出来,$*是输出一个整体,而$@是分别输出参数。
脚本内容:

#!/bin/bash
echo "---------------\$*--------------"
for i in "$*"
do
	echo	"$i"
done

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

echo"–\$*–"中的\是转义符,将其变成了普通字符,而不是预定义变量。

执行过程:

[root@linus ~]# sh 11.sh 1 2 3
---------------$*--------------
1 2 3
---------------$@--------------
1
2
3
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

虚伪的空想家

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

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

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

打赏作者

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

抵扣说明:

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

余额充值