对于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 里的变量 总结的更多相关文章

  1. Shell执行将脚本里的变量打印到指定日志文件

    首先需要定位获取任务的运行日志或者报错信息,才能定位问题. 通过shell调用有些脚本的话,日志信息会打印在shell里.不过也有用户在shell里调用正常,但是到crontab调用的时候就出错并且没 ...

  2. shell脚本学习之Bash shell 里各种括号的用法

    今天在 SegmentFault 上看到又有人问起关于Shell里各种括号的问题.对于很多玩Shell的人,括号是个很尴尬的问题,用起来没问题,说起来不明白,我在这里总结一下Bash Shell几种括 ...

  3. Linux —— Shell编程之变量赋值和引用

    Linux的shell编程是一种非常成熟的编程语言,它支持各种类型的变量.有三种主要的变量类型:环境变量.内部变量和用户变量. 环境变量(environment variable)是系统环境的一部分, ...

  4. shell基础及变量

    一 Shell概述 1.Shell的作用——命令解释器,“翻译官” shell作为一个人机接口,用于解释用户输入的命令,将命令解释为Linux内核可以执行的2进制代码,并将执行的结果返回在标准终端上. ...

  5. Python第七天 函数 函数参数 函数里的变量 函数返回值 多类型传值 函数递归调用 匿名函数 内置函数

    Python第七天   函数  函数参数   函数里的变量   函数返回值  多类型传值     函数递归调用   匿名函数   内置函数 目录 Pycharm使用技巧(转载) Python第一天   ...

  6. Shell的特殊变量

    在Shell里存在的一些特殊变量:$!.$@.$#.$$.$*.$0.$n.$_.$? [root@shell ~]# sh shell.sh aaa bbb ccc$0 获取当前执行的shell脚本 ...

  7. awk中使用shell的环境变量

    awk中使用shell的环境变量一:"'$var'"这种写法大家无需改变用'括起awk程序的习惯,是老外常用的写法.如:var="test"awk 'BEGIN ...

  8. 3.1 shell简介、变量、运算符

    小知识: ipcs可以查看系统中创建的ipc进程间通信资源,例如信号量.共享内存等.示例如下: 什么是shell? shell是核心程序kernel之外的指令解析器,是一个程序,同时是一种命令语言和程 ...

  9. Bash Shell 里的各种括号

    天在 SegmentFault 上看到又有人问起关于Shell里各种括号的问题.对于很多玩Shell的人,括号是个很尴尬的问题,用起来没问题,说起来不明白,我在这里总结一下Bash Shell几种括号 ...

随机推荐

  1. 在Eclipse中使用JUnit4进行单元测试(初级篇)

    首先,我们来一个傻瓜式速成教程,不要问为什么,Follow Me,先来体验一下单元测试的快感! 首先新建一个项目叫JUnit_Test,我们编写一个Calculator类,这是一个能够简单实现加减乘除 ...

  2. Linux系统的压缩技术

    1.常见的压缩文件扩展名 *.Z ---> compress程序压缩的文件. *.gz --->gzip 程序压缩的文件: *.bz2------>bzip2程序压缩的文件: *.t ...

  3. JSTL 核心标签库 使用

    JSTL 核心标签库标签共有13个,功能上分为4类: 1.表达式控制标签:out.set.remove.catch 2.流程控制标签:if.choose.when.otherwise 3.循环标签:f ...

  4. Java性能调优

    一.JVM内存模型及垃圾收集算法 1.根据Java虚拟机规范,JVM将内存划分为: New(年轻代) Tenured(年老代) 永久代(Perm) 其中New和Tenured属于堆内存,堆内存会从JV ...

  5. c++ 一些随笔

    1. A region of source code where any use of the unqualified name (that is, as a plain identifier) re ...

  6. U盘安装CentOS 7.0

    U盘安装CentOS 7.0 由于学习需要centos环境,so上网下载centos安装镜像,发现版本已经到7.0了,(╮(╯▽╰)╭,上次折腾还是6.4的版本呢,)花了一点时间下载下来按照装6.4的 ...

  7. SVN版本问题:svn: E155021: This client is too old to work with the working copy at

    最近Android Studio SVN老是提示: SVN版本问题:svn: E155021: This client is too old to work with the working copy ...

  8. Error:The network adaptor could not establish the connection问题的解决办法

     最近在学习hibernate 5.0.4, 自然而然就需要使用数据库,由于本人工作中一直使用Oracle,于是在自己的电脑上安装了Oracle 12.1.0, 安装完成使用一直没有问题,突然有一天使 ...

  9. Fail2ban 防止暴力破解centos服务器的SSH或者FTP账户

    次尝试登陆root账户失败的情况.[说明服务器被攻击了]   logtarget = SYSLOG  #我们需要做的就是把这行改成/var/log/fail2ban.log,方便用来记录日志信息 so ...

  10. ant 介绍 http://blog.csdn.net/sunjavaduke/archive/2007/03/08/1523819.aspx

    转自: 本内容包含了Ant的历史简要介绍,Ant的功能以及Ant框架的介绍,并对下载安装使用Ant进行了示例介绍,同时通过一个Java程序讲解了Ant的基本使用方法. 1.       Ant简介:这 ...