Shell特殊变量

$ 表示当前Shell进程的ID,即pid

$echo $$

运行结果

2934

特殊变量列表

变量含义
$0当前脚本的文件名
$n传递给脚本或函数的参数。n 是一个数字,表示第几个参数。例如,第一个参数是$1,第二个参数是$2。
$#传递给脚本或函数的参数个数。
$*传递给脚本或函数的所有参数。
$@传递给脚本或函数的所有参数。被双引号(" ")包含时,与 $* 稍有不同,下面将会讲到。
$?上个命令的退出状态,或函数的返回值。
$$当前Shell进程ID。对于 Shell 脚本,就是这些脚本所在的进程ID。

命令行参数

#!/bin/bashecho "File Name: $0"
echo "First Parameter : $1"
echo "First Parameter : $2"
echo "Quoted Values: $@"
echo "Quoted Values: $*"
echo "Total Number of Parameters : $#"
运行结果:
$./test.sh Zara Ali
File Name : ./test.sh
First Parameter : Zara
Second Parameter : Ali
Quoted Values: Zara Ali
Quoted Values: Zara Ali
Total Number of Parameters : 2

$* 和 $@ 的区别

$* 和 $@ 都表示传递给函数或脚本的所有参数,不被双引号(" ")包含时,都以"$1" "$2" … "$n" 的形式输出所有参数。
但是当它们被双引号(" ")包含时,"$*" 会将所有的参数作为一个整体,以"$1 $2 … $n"的形式输出所有参数;"$@" 会将各个参数分开,以"$1" "$2" … "$n" 的形式输出所有参数。

#!/bin/bash
echo "\$*=" $*
echo "\"\$*\"=" "$*"echo "\$@=" $@
echo "\"\$@\"=" "$@"echo "print each param from \$*"
for var in $*
doecho "$var"
doneecho "print each param from \$@"
for var in $@
doecho "$var"
doneecho "print each param from \"\$*\""
for var in "$*"
doecho "$var"
doneecho "print each param from \"\$@\""
for var in "$@"
doecho "$var"
done

执行 ./test.sh "a" "b" "c" "d",看到下面的结果:

$*=  a b c d
"$*"= a b c d
$@=  a b c d
"$@"= a b c d
print each param from $*
a
b
c
d
print each param from $@
a
b
c
d
print each param from "$*"
a b c d
print each param from "$@"
a
b
c
d

退出状态

$? 可以获取上一个命令的退出状态。所谓退出状态,就是上一个命令执行后的返回结果。退出状态是一个数字,一般情况下,大部分命令执行成功会返回 0,失败返回 1。不过,也有一些命令返回其他值,表示不同类型的错误。

$./test.sh Zara Ali
File Name : ./test.sh
First Parameter : Zara
Second Parameter : Ali
Quoted Values: Zara Ali
Quoted Values: Zara Ali
Total Number of Parameters : 2
$echo $?
0
$

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/296679.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

当你的技术债务到期时,LinkedIn的故事 | IDCF

原文:https://www.linkedin.com/pulse/when-your-tech-debt-comes-due-kevin-scott/译者:冬哥那是 2011 年 10 月,就在 LinkedIn 上市后的第二次财报发布之前的几周。LinkedIn的业务做得很好,从任意可见角度来衡量,可以…

Libsvm分类步骤

1. 样本集的整理:提取特征,以LIBSVM指定格式存储。2. 特征的标准化处理:特征的缩放Scaling,避免量纲的影响。3. 选择合适的核函数类型4. 优选核函数的参数与C采用:交叉验证(或留一法)、grid-search5. 基于优选的参数&a…

ant vue 语言_Ant Design Vue是什么

Ant Design Vue 是蚂蚁金服 Ant Design 官方唯一推荐的Vue版UI组件库,组件的风格与Ant Design保持同步,组件的html结构和css样式也保持一致。Ant Design Vue 是遵循 Ant Design 的 Vue 组件库。是蚂蚁金服 Ant Design 官方唯一推荐的 Vue 版 UI 组件库&a…

再现神人!仅仅只花4天半就解开了史上最难密码,这下整个圈子都炸开了.........

全世界只有3.14 % 的人关注了爆炸吧知识鲁迅先生曾说,记录这东西,就是用来打破的。前阵子程序员圈子一定热呼的不可开交,咋回事?还不是因为有个程序员妹子捅出了一个大篓子。事情是这样的,在德国慕尼黑有一个名叫 Leah…

布鲁克大学计算机科学,布鲁克大学计算机科学本科.pdf

布鲁克大学计算机科学本科.pdf留学监理服务网布鲁克大学计算机科学 - Computer Science基本信息所属学校 布鲁克大学 - Brock University 所在院系 数学与科学学院 - 计算科学系专业名称 计算机科学 - Computer Science 学历层次 本科计算机与信息科学 计算与计算授予学位 计算…

HDU 1856 Brave Game(巴什博奕)

Brave Game Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 3175 Accepted Submission(s): 2105 Problem Description十年前读大学的时候,中国每年都要从国外引进一些电影大片,其中有一部…

拥抱开源!除了微软红帽,这些国际大厂你认识几个?

在上世纪 90 年代,开源操作系统 Linux 出现时,有能力自行安装使用的用户并不多。因此,早期开源社区和开源软件厂商的一大工作就是向用户售卖书籍,提供初始的技术支持。比如基于 Linux 的内核,一批开源软件厂商开发出不…

J2EE第五课Servlet随课笔记

把上课笔记全上传到博客中,二原因: 1 方便自己以后查阅,看得多,记得多 2 提供一些笔记给刚学JAVA的朋友, 笔记: 1 1、什么是Servlet? 2 是运行于服务端(java服务器)的一个jav…

乒乓球单循环赛_乒乓球淘汰赛制和单循环赛制的比赛方法是什么?

展开全部一、乒乓球淘汰赛制比赛方法:1、32人先进行1轮淘汰赛,获胜的16人进入胜62616964757a686964616fe78988e69d8331333431363531者组,失败的16人进入败者组2、败者组第一轮:16人参赛,失败的8人被淘汰,胜…

详解Oracle DELETE和TRUNCATE 的区别

语法delete from aa truncate table aa 区别 1.delete from后面可以写条件,truncate不可以。2.delete from记录是一条条删的,所删除的每行记录都会进日志,而truncate一次性删掉整个页,因此日至里面只记录页释放,简言之…

湖南工业职业技术学院计算机协会,计算机网络协会

一、协会简介于2005年成立,系信息工程系直属协会。以学习网络知识理论及技术实践为主,以业余活动为辅的双向协会。由我系专业教研团队亲自授课教学,达到教学合一效果。注重培养高技能、高素质综合能力人才。二、协会宗旨以普及计算机基础知识…

浙大月赛C题(2012/8)Cinema in Akiba(线段树)

http://acm.zju.edu.cn/onlinejudge/showContestProblem.do?problemId4791 (1)第一次写浙大的题目,这题让我十分意外,基本的线段树类型(求第x个空位)。 (2)电影院里,一次…

你是一个优秀的IT PRO吗?(下篇)

首先感谢一些朋友阅读我的拙作《你是一个优秀的IT PRO吗?(上篇)》才使得我有动力写出这个下篇。在上篇中,我只是简单的总结了几条,要成为优秀的IT PRO所需要注意的几点,在这片文章中,我将根据我…

oss多线程 上传_oss-android/ios-sdk 断点续传(多线程)

oss-android/ios-sdk 断点续传前言移动端现状随着移动端设备的硬件水平的不断提高,如今的cpu,内存等方面都大大的超过了一般的pc电脑,因此在现今的程序中,合理的使用多线程去完成一些事情是非常有必要的。多线程上传的好处进一步占…

生病了女朋友说要「陪床」,结果真的是陪床不是陪我......

1 生病住院了女朋友说要来陪床结果真的是陪床不是陪我......▼2 气氛突然微妙......▼3 隔壁的一家人都馋哭了!▼4 上街偷拍帅哥的正确方法▼5 WOW!AMAZING!▼6 史上最强小学生出现了!▼‍7 养二哈不光挺费家具的还挺废人的▼你点的每个赞&#x…

uiuc计算机课程,UIUC计算机科学专业解读

UIUC的计算机科学专业创建于1972年,到1986年基本定型,十多年来几乎没有什么变化。其中,数值分析方向课程中,Math225为矩阵论,CS257为数值方法,CS35x代表数值分析导论、常微分数值方法、偏微分与数值逼近和数…

Nutch 是一个开源Java 实现的搜索引擎

Nutch 是一个开源Java 实现的搜索引擎。它提供了我们运行自己的搜索引擎所需的全部工具。包括全文搜索和Web爬虫。 Nutch的创始人是Doug Cutting,他同时也是Lucene、Hadoop和Avro开源项目的创始人。Nutch 诞生于2002年8月,是Apache旗下的一个用Java实现的…

我的KT库之----数据对象

了解或者认识KT: http://www.cnblogs.com/kingthy/archive/2011/08/08/2130973.html 在项目中如何使用KT? KT是一个库,所以将KT的dll文件引用到您的项目上即可使用KT里的函数功能。 本节将介绍大家认识KT库里的数据对象(DbObject)。KT里的数据…

System.Text.Json 自定义 Conveter

System.Text.Json 自定义 ConveterIntroSystem.Text.Json 作为现在 .NET 默认提供的高性能 JSON 序列化器,对于一些比较特殊类型支持的并不太好,业务需求中总是有各种各样的需要,很多时候就需要用到自定义 Converter ,对于微软新出…

jwt的token自动续约_JWT(JSON Web Token)自动延长到期时间

cchamberlain..6如果您使用的是节点(React/Redux/Universal JS),则可以安装npm i -S jwt-autorefresh.此库根据用户计算的访问令牌到期之前的秒数(基于令牌中编码的exp声明)计划刷新JWT令牌.它有一个广泛的测试套件,可以检查很多条件,以确保任何奇怪的活动都伴随着有关环境配置…