shell参数详解

本文详细介绍了Shell脚本中的特殊变量,如$0、$1-$9、$*、$@、$#、$?、$$和$!的含义和用法,特别是$*与$@的区别。此外,还讲解了整型比较的运算符,如-eq、-gt、-lt等,并给出了判断命令执行状态的示例。通过实例展示了如何在脚本中使用这些变量和比较操作进行条件判断。

目录

1、参数含义

1.1、特殊变量

1.2、说明:

1.2.1、$?:多判断预设命令是否完成

1.2.2、$*和$@的区别

 1.3、整型比较


1、参数含义

1.1、特殊变量

变量

含义

$0

获取当前shell脚本的名字

$1

传递给该shell脚本或函数的第一个参数

$2

传递给该shell脚本或函数的第二个参数

$*

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

$@

传递给脚本或函数的所有参数。被双引号(" ")包含时,与 $* 稍有不同

$#

获取传递给脚本或函数的参数个数

$_

获取在此之前执行的命令或脚本的最后一个参数

$?

获取上个命令的退出状态、或函数的返回值(0成功,非0为失败)

$$

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

$!

获取上一个在后台工作的进程的进程号(PID)

1.2、说明:

1.2.1、$?:多判断预设命令是否完成

        例如:

if [ $? -ne 0 ]
then
#脚本不正常退出
exit 1
fi

 

1.2.2、$*和$@的区别

相同点:

$* 和 $@ 都表示传递给函数或脚本的所有参数,不被双引号" "包含时,都以$1 $2 … $n 的形式输出所有参数。

不同点:

  • 当它们被双引号" "包含时:
    • "$*" 会将所有的参数作为一个整体, 以"$1 $2 … $n"的形式输出所有参数;
    • "$@" 会将各个参数分开, 以"$1" "$2" … "$n" 的形式输出所有参数;
  • 可理解:
    • "$*" 将命令行所有参数视为单个字符串,等同于"$1$2$3"
    • "$@" 将命令行每个参数视为单独的字符串,相当于"$1""$2""$3"。这种方式会保留所有内嵌在参数的任何白,都能传递给其它程序。
set -- "who are " your me #set命令传入参数
1.)$*不加引号
[root@compute1 ~]# for i in $*;do echo $i;done 
who
are
your
me

2.)“$*”$*加引号
[root@compute1 ~]# for i in "$*";do echo $i;done                    
who are your me

3.)$@不加引号
[root@compute1 ~]# for i in $@;do echo $i;done
who
are
your
me

4.)"$@" $@加引号
[root@compute1 ~]# for i in "$@";do echo $i;done 
who are
your
me

 1.3、整型比较

					运算符解释:
 精确比较:
        -eq         等于 equal
        -gt         大于
        -lt         小于

 模糊比较:
        -ge         大于或等于
        -le         小于或等于
        -ne         不等于
        
        
if [ $? -eq 0 ]代表如果上一条命令结束状态是0的话就执行then后面的语句。
if [ -f ${filename} ] -e 存在,-d 文件夹,-f 文件,-s  非空

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值