shell 里的变量 总结
对于linux shell的使用者来说, 巧妙的应用变量不仅能够快速的解决问题,同时能够获取非常大的乐趣,因为shell的变量内部可以附加一些运算,使得程序非常简洁明了并且功能强大,以下详细介绍一下:
1.基本变量:
变量的命名:以字符,数字,下划线的组合命名的,比如 x,x1,x_1
变量的赋值:a) x=1(赋数值,注意,不要给x赋值浮点数,x=1也并非真的是将数值1赋给x,x的值需要上下文推测,shell并非用来做数值运算的,此外x=为赋空值);
b) x="hello world"(字符串);
c) x=$y (将变量y的值提取出来付给x,注意当变量后有字符串跟随时,要用花括号,比如y="hello",那么x=${y}world的值为helloworld);
d) x=$((1+2))(算数表达式的值,x值为3);
e) x=$[1+2](相当于d);
f) x=$(ls -lt)(把命令产生的输出赋值给x);
g) x=`ls -lt`(相当于f);
h) x=${y#/*/}(比如y="/home/hello/world/hello.world.txt,那么x的值就是hello/world/hello.world.txt,${varname#pattern}(leftmost));
i) x=${y##/*/}(y同上,那么x的值为hello.world.txt,${varname#pattern}(rightmost);
j) x=${y%.*?}(y同上,那么x的值为/home/hello/world/hello.world,%与#的作用方向正好相反,#左%右);
k) x=${y%%.*}(y同上,x的值为/home/hello/world/hello,%%与##的作用方向相反);
l) x=${y:-word}(假设y存在且不为null,那么x=$y,否则x=word);
m)x=${y:+word}(假设y存在且不为null,那么x=word,否则x=);
n) x=${y:=word}(假设y存在且不为null,那么x=$y,否则y=word,x=word);
o) x=${y:?message}(假设y存在且不为null,那么x=$y,否则输出y:message);
p) x=${#y}(返回$y的字符串长度,POSIX标准);
2.特殊变量:
2a.环境变量:比如 $PATH、$HOME、$ENV
2b.内置变量:
1) $#:命令行参数总数
2) $*,$@:所有命令行参数,区别是$*将所有命令行参数视为单个字符串"$1,$2,...",而$@将所有命令行参数视为独立字符串"$1","$2",...
3) $?:程序的退出状态
4) $$:shell的进程编号
5) $0:shell的程序名称
3.bash扩展的数组:
x=($x1,$x2,$x3), 那么x就是一个包含3个元素的向量了,取第i个元素的方法是${x[i]},另外,${x}意思是取第0个元素${x[0]},取出整个向量要用${x[@]}或者${x[*]},向量的长度为${#x[*]}
通过以上的总结,我们可以看到shell对变量的处理非常的灵活,能够巧妙运用这些变量的使用方法可以减少代码的长度,使得代码更加简洁高效
shell 里的变量 总结的更多相关文章
- Shell执行将脚本里的变量打印到指定日志文件
首先需要定位获取任务的运行日志或者报错信息,才能定位问题. 通过shell调用有些脚本的话,日志信息会打印在shell里.不过也有用户在shell里调用正常,但是到crontab调用的时候就出错并且没 ...
- shell脚本学习之Bash shell 里各种括号的用法
今天在 SegmentFault 上看到又有人问起关于Shell里各种括号的问题.对于很多玩Shell的人,括号是个很尴尬的问题,用起来没问题,说起来不明白,我在这里总结一下Bash Shell几种括 ...
- Linux —— Shell编程之变量赋值和引用
Linux的shell编程是一种非常成熟的编程语言,它支持各种类型的变量.有三种主要的变量类型:环境变量.内部变量和用户变量. 环境变量(environment variable)是系统环境的一部分, ...
- shell基础及变量
一 Shell概述 1.Shell的作用——命令解释器,“翻译官” shell作为一个人机接口,用于解释用户输入的命令,将命令解释为Linux内核可以执行的2进制代码,并将执行的结果返回在标准终端上. ...
- Python第七天 函数 函数参数 函数里的变量 函数返回值 多类型传值 函数递归调用 匿名函数 内置函数
Python第七天 函数 函数参数 函数里的变量 函数返回值 多类型传值 函数递归调用 匿名函数 内置函数 目录 Pycharm使用技巧(转载) Python第一天 ...
- Shell的特殊变量
在Shell里存在的一些特殊变量:$!.$@.$#.$$.$*.$0.$n.$_.$? [root@shell ~]# sh shell.sh aaa bbb ccc$0 获取当前执行的shell脚本 ...
- awk中使用shell的环境变量
awk中使用shell的环境变量一:"'$var'"这种写法大家无需改变用'括起awk程序的习惯,是老外常用的写法.如:var="test"awk 'BEGIN ...
- 3.1 shell简介、变量、运算符
小知识: ipcs可以查看系统中创建的ipc进程间通信资源,例如信号量.共享内存等.示例如下: 什么是shell? shell是核心程序kernel之外的指令解析器,是一个程序,同时是一种命令语言和程 ...
- Bash Shell 里的各种括号
天在 SegmentFault 上看到又有人问起关于Shell里各种括号的问题.对于很多玩Shell的人,括号是个很尴尬的问题,用起来没问题,说起来不明白,我在这里总结一下Bash Shell几种括号 ...
随机推荐
- Sublime Text 2/3安装使用及常用插件
一.介绍 Sublime Text 是一款较新的编辑器,它轻量.简洁.高效,良好的扩展性以及跨平台等特性,使得越来越多的开发人员喜爱.它是一款收费的商业软件,但可以免费无限制无限期的试用,只会偶尔提醒 ...
- Java lamda Stream
Intermediate:一个流可以后面跟随零个或多个 intermediate 操作.其目的主要是打开流,做出某种程度的数据映射/过滤,然后返回一个新的流,交给下一个操作使用.这类操作都是惰性化的( ...
- js加解密
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- UVA 1151 买还是建(最小生成树)
买还是建 紫书P358 [题目链接]买还是建 [题目类型]最小生成树 &题解: 这题真的心累,看了3天,最后照着码还是wa,先放lrj代码,以后再看吧 &代码: // UVa1151 ...
- JSP EL表达式(转)
一.EL简介 1.语法结构 ${expression}2.[]与.运算符 EL 提供.和[]两种运算符来存取数据. 当要存取的属性名称中包含一些特殊字符,如.或?等并非字母或数字 ...
- C#:String.Format数字格式化输出 {0:N2} {0:D2} {0:C2}等等
int a = 12345678; //格式为sring输出// Label1.Text = string.Format("asdfadsf{0}adsfasdf",a); / ...
- BZOJ 3732 Network
2016.1.28 纪念我BZOJ第一题 Description 给你N个点的无向图 (1 <= N <= 15,000),记为:1…N. 图中有M条边 (1 <= M <= ...
- 使用xpath的轴(Axis)进行元素定位
使用Xpath轴方式可依据在文档数中的元素的相对位置来进行定位,先找到一个相对好定位的元素,在根据与它相对位置来定位其他元素,可以解决一些元素难以定位的问题.今天学习了,写下笔记加深下印象 如家HTM ...
- Unity3d程序运行的时候在unity3d标志哪里进不去的原因
我那个去,居然是有两个error..我郁闷了,unity编译器有error居然也能打包能apk.我真是醉了.搞了我几个小时.
- 十一、Manipulators
1. Manipulators是可以用三维进行绘制的的节点,可以将用户行为值化,对其他节点的属性进行modify. 2. 属性值可以通过Channel Box 和Graph Editor进行修改.同其 ...