笔记-Shell特殊变量

位置变量:

$0: 获取当前执行shell的文件名称,如果执行脚本带路径那么就包括脚本路径

$n:  获取当前执行的shell脚本的第ng参数值,n=1..9,当n为0时表示脚本的文件名,如果n大于9,大括号括起来${10}.

[[email protected] ~]# vim q.sh 
                    echo $1 $2 $3 $4 $5 $6 $7 $8 $9 ${10} ${11} ${12} ${13} ${14} ${15}

输出的结果

[[email protected] ~]# sh q.sh {a..z}
                    a b c d e f g h i j k l m n o

$*:  将所有的命令行所有参数视为单个字符串,等同于 “$1$2$3”,"$*"

[email protected]: 将命令行每个参数视为单独的字符串,等同于“$!”"$2" "$2"这是将参数传递给其他程序的最佳方式,因为他会保留所有内嵌在每个参数里的任何空白

注意:上述区别仅限在于加双引号的时候,即“$*”与“[email protected]”

 例:[[email protected] ~]# set -- "I am" from HuNan

[[email protected] ~]# echo $#

3

[[email protected] ~]# for i in "$*";do echo $i;done  有双引号的情况下,当做一个参数输出
                I am from HuNan
                [[email protected] ~]# for i in "[email protected]";do echo $i;done  有双引号的情况下,独立输出
                I am
                from
                HuNan

例 :

[[email protected] ~]# for i;do echo $i;done  去掉in变量列表,相当于in “[email protected]”

I am

from

HuNan

例:

[[email protected] ~]# for i in $*;do echo $i;done   不加双引号,把所有参数输出,然后第一个参数“I am”也拆开了

I
                am
            from
            HuNan

$?: 获取执行上一个指令的返回值(0 为成功,非零为失败) 这个变量很常用

例:

echo $?

$#:获取当前执行的shell脚本后面的参数总个数。

企业案 例控制用户传参个数

[[email protected] ~]# vim q1.sh

[ $# -ne 2 ] && {
                    echo "pls input two number"
                    exit 1                   ---->赋值给当前的shell的$?变量了。

}
                    echo "Thanks!"

时间: 2024-12-28 11:54:32

笔记-Shell特殊变量的相关文章

shell 脚本实战笔记(2)--环境变量PATH的恩怨情仇

在linux环境下, 相信大家对环境变量PATH, 多多少少有所接触, 这边讲讲PATH的在linux的前世因缘. 先讲讲一个列子 假如我们在为一个新的应用配置其PATH路径中时,  不小心忽略了原先的$PATH内容, 把原本的PATH=/path/to/newcmd:$PATH, 写成了PATH=/path/to/newcmd, 并不小心写入了~/.bashrc, 并且source ~/.bashrc. 这时会发生什么? 我们如何去处理这种情况? 所有的命令都不能用了, 想回去编辑~/.bas

linux学习之shell脚本 ------- 变量

[本文是自己学习所做笔记,欢迎转载,但请注明出处:http://blog.csdn.net/jesson20121020] 今天来看一下Shell中的一些变量. 变量类型: Shell中有以下几种变量: 1) 本地变量 2) 环境变量 3) 位置变量 4) 标准变量 5) 特殊变量 1) 本地变量 本地变量在用户现在的Shell生命周期的脚本中使用. 用法: variable-name=value set: 可以显示本地所有的变量 注意,本地变量如果加上readonly,则该本地变量不能被修改,

shell编程变量及变量类型

编程语言:包括机器语言.汇编语言.{高级语言[静态语言(编译型语言,一般为强类型变量,需要发布为可执行程序,C.C++.Java,C#)和动态语言(解释型语言,一般为弱类型语言,不需要发布为可执行程序,是一边执行一边解释,Asp,asp.net,php,shell,python.perl)]} 面向对象:解决对象之间的动作,主要适合开发大型程序java,python,c++,perl 面向过程:主要解决过程,主要适合开发小型程序shell,c 变量:是内存空间,是命名的内存空间,存储数据的存储格

javascript学习笔记---ECMAScript-判断变量类型

判断类型之前,先要清楚有哪些类型. (理理思路:程序由数据和方法构成,数据由简单数据和复杂数据构成) 即类型有: 数据(简单数据:boolean,string,num,undefined,null.复杂数据:object), 方法(function) 万能的typeof,神一样的方法 typeof(1);// num typeof("hello");// string   typeof(false);// boolean var vFlag; typeof(vFlag);// unde

shell中变量的使用(2)

shell中变量的几点知识: 变量: 1.在默认情况下,所有的变量都被看做字符串来存储的 2.变量区分大小写 3.在变量名前加$来访问内容 4.不需要声明 5.双引号中允许$扩展(用变量的值替换),单引号不行. 示例: s=hello         #(注意等号两边不能有空格) echo $s 环境变量: shell脚本开始执行时,一些变量会根据环境设置中的值进行初始化,这些变量就是环境变量.习惯大写字母. $HOME 当前用户的家目录 $PATH  以冒号分割的用来搜索命令的目录列表 $0 

重构笔记——分解临时变量

本文是在学习中的总结,欢迎转载但请注明出处:http://blog.csdn.net/pistolove/article/details/42463871         在上一篇文章中介绍了"重构笔记--引入解释性变量".本文将介绍"分解临时变量"这种重构手法.         下面让我们来学习这种重构手法吧. 开门见山         发现:你的程序有某个临时变量被赋值超过一次,它既不是循环变量,也不被用于收集计算结果. 解决:针对每次赋值,创造一个独立.对应的

shell之变量

变量赋值 变量的赋值有五种:使用read命令,直接赋值,使用命令行参数,使用命令行的输出结果,从文件读取.1 先说一下从read命令吧:(主要是在需要交互时使用)Read命令是系统内置命令,语法格式为:read 变量1 变量2当Shell脚本执行到read命令时,将暂停脚本的执行并等待键盘的输入,当用户输入完毕并且敲下回车之后,将完成赋值操作,脚本继续执行.Read指令的规则:多个数据或变量之间用空格隔开若变量个数与数据个数相等时,对应取值若变量个数大于数据个数时,没有输入数据的变量取空值若变量

《软件调试的艺术》笔记--检查和设置变量

1.使用print命令查看变量值 使用print命令(简写为p)可以查看变量值. 使用如下的程序1进行测试. #include <stdio.h> struct node{ int index; struct node* next; }; int main(void) { struct node head; head.index = 1; head.next = NULL; int i; for(i=0; i<3; i++){ head.index++; } return 0; } (g

shell自定义变量

一.Shell定义变量需要遵循的规则 Shell编程中,使用变量无需事先声明,同时变量名的命名须遵循如下规则: 首个字符必须为字母(a-z,A-Z) 中间不能有空格,可以使用下划线(_) 不能使用标点符号 不能使用bash里的关键字(可用help命令查看保留关键字) 二.shell变量赋值 需要给变量赋值时,可以这么写:   变量名=值 三.shell变量的引用 要取用一个变量的值,只需在变量名前面加一个$ ( 注意: 给变量赋值的时候,不能在"="两边留空格 ).例如:#!/bin/