详解Shell 脚本中 “$” 符号的多种用法

通常情况下,在工作中用的最多的有如下几项:

1、$#:表示执行脚本传入参数的个数

2、$*:表示执行脚本传入参数的列表(不包括$0)

3、$$:表示进程的id;Shell本身的PID(ProcessID,即脚本运行的当前 进程ID号)

4、$!:Shell最后运行的后台Process的PID(后台运行的最后一个进程的 进程ID号)

5、$@:表示获取执行脚本传入的所有参数

6、$0:表示执行的脚本名称

7、$1:表示第一个参数

8、$2:表示第二个参数

9、$?:表示脚本执行的状态,0表示正常,其他表示错误

在Shell脚本中,我们经常会看到$0、$1、$2、$3等,看着像是参数,但又不太像,这些究竟表示啥呢?其实非常简单:

$0:你写的shell脚本本身的名字
$1:给你写的shell脚本传的第一个参数
$2:给你写的shell脚本传的第二个参数

#!/bin/sh
echo "shell脚本本身的名字: $0"
echo "传给shell的第一个参数: $1"
echo "传给shell的第二个参数: $2"

假设该脚本名字叫test.sh,那么我们执行bash test.sh a 1,就可以看到结果:
shell脚本本身的名字: test.sh

传给shell的第一个参数: a

传给shell的第二个参数: 1

Linux脚本中$#、$0、 1 、 1、 1@、 ∗ 、 *、 、 、 分别表示什么?

$#:传入脚本的参数个数;
 
$0:  脚本自身的名称;  
 
$1:  传入脚本的第一个参数;
 
$2:  传入脚本的第二个参数;
 
$@: 传入脚本的所有参数;
 
$*:传入脚本的所有参数;
 
$$:  脚本执行的进程id;
 
$?:  上一条命令执行后的状态,结果为0表示执行正常,结果为1表示执行异常;
 
其中$@与$*正常情况下一样,当在脚本中将$*加上双引号作为“$*”引用时,此时将输入的所有参数当做一个整体字符串对待。比如输入参数有a b c三个参数,则“$*”表示“a b c”一个字符串。
  • 2
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Shell脚本是一种用于编写和执行命令的脚本语言。在Linux,有多种Shell命令解析器可供选择,常见的有Bourne Shell(/usr/bin/sh或/bin/sh)、Bourne Again Shell(/bin/bash)、C Shell(/usr/bin/csh)、K Shell(/usr/bin/ksh)和Shell for Root(/sbin/sh)等。\[2\] 在编写Shell脚本文件时,通常需要在文件的最前面添加一行指定解析器的声明,例如#!/bin/bash。这是因为Linux存在多种解析器,它们之间的语法可能有所不同,通过添加这一声明可以确保使用指定的解析器来执行脚本。\[3\] 在Shell脚本,可以使用source命令或点号(.)来加载另一个脚本文件。这两种方式都是将指定的脚本内容加载到当前脚本,并由同一个Shell进程来执行。与之相反,使用sh命令调用另一个脚本会创建一个新的Shell进程来执行,导致父进程的变量无法在子进程访问到。\[1\] 总结来说,Shell脚本是一种用于编写和执行命令的脚本语言,可以使用不同的Shell命令解析器来解析和执行脚本。在编写脚本时,需要在文件的最前面添加解析器声明,以确保使用指定的解析器。同时,可以使用source命令或点号(.)来加载另一个脚本文件,而使用sh命令会创建一个新的Shell进程来执行脚本。 #### 引用[.reference_title] - *1* *2* *3* [Linux脚本shell详解](https://blog.csdn.net/footless_bird/article/details/123698139)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值