shell中的变量

变量的声明:在shell中变量不需要事先声明,不必显示声明

变量的赋值:VAR=value,不允许有空格。如:a=100

变量的数据类型:shell中的变量无数据(弱)类型!同一变量可以存放不同类型的值。

如:a=1.25a=100a=“Hello”

变量的获取:在shell中使用$或者${},如:$date,${date}

Unset:用于删除已经定义的环境变量或本地变量。Unset变量名bash的使用技巧

shell维护一个可以用alias和unalias内建命令来设置或者取消别名列表。用alias命令不带选项的时候显示当前shell所知的别名列表。

自定义时,等号两边不能有空格:alias list=‘ls -l’alias

lsh=‘ls *.shBourne shell保留变量

变量名

定义

auto_resume

这个变量控制shell如何与用户交互和作业控制。

BASH

用于执行当前Bash实例的全路径。

BASH_ENV

如果这个变量在Bash调用执行一个shell脚本时已被设置,它的值将被展开并用作在执行脚本前读取的启动文件名。

BASH_VERSION

当前Bash实例的版本号。

BASH_VERSINFO

一个只读变量数组,它的成员保存这个Bash实例的版本信息。

COLUMNS

select内建命令来决定打印选择列表时终端宽度。在收到SIGWINCH信号时自动设置。

COMP_CWORD

包含当前光标位置的字的${COMP_WORDS}的一个索引。An index into ${COMP_WORDS} of the word containing the current cursor position.

COMP_LINE

当前命令行。

COMP_POINT

指明相对于当前命令起点的当前光标位置。

COMP_WORDS

一个由当前命令行中单个词组成的变量数组。

COMPREPLY

一个变量数组,Bash从中读取由一个可编程完整设备调用的一个shell函数生成的可能的完成。An array variable from which Bash reads the possible completions generated by a shell function invoked by the programmable completion facility.

DIRSTACK

一个保存当前目录栈内容的变量数组。

CDPATH

一个由冒号分割的目录列表作为内建命令cd的搜索路径。

HOME

当前用户的home目录;默认为内建命令cd。这个变量的值同样被~扩展使用。

IFS

分割域的一个字符的列表;用于shell把词分开作为扩展。

MAIL

如果这个变量设成一个文件名并且MAILPATH变量没有设置,Bash在指定文件中通知用户邮件的到达。

MAILPATH

一个用冒号分隔的文件名列表,shell周期性地从这个文件里检测新邮件。

OPTARG

getopts内建命令处理的最后的选项参数的值。

OPTIND

最后一个由getopts内建命令处理的选项参数的索引号。

PATH

一个用冒号分隔的目录列表,shell从这些目录里寻找命令。

PS1

主要提示符。默认值是“'\s-\v\$ '”。

PS2

次要提示符。默认值是“'> '”。特殊Bash变量

字符

定义

$*

展开为位置参数,从1开始。当扩展发生在双引号时,它展开成一个单独的词,每个参数的值由IFS特殊变量的第一个字符分隔。

$@

展开为位置参数,从1开始。当在双引号里展开时,每个参数展开成独立的词。

$#

把位置参数展开为十进制数字。

$?

展开成最近执行的前台管道程序的退出状态。

$-

一个连字符展开为当前选项标志 内部命令集 或者那些shell自己的集(如-i)

$$

展开成shell的进程ID。

$!

展开成最近在后台(异步)执行的命令的进程ID。

$0

展开成shell或者shell脚本名。

$_

下划线变量在shell启动时设置,包含shell的绝对文件名或者作为参数列表被执行的脚本。随后,它展开为前一个命令扩展后的最后一个参数。它同样设置为每个执行程序的全路径,放在那个命令的输出环境中。当检查邮件时,这个参数保存邮件文件的名字。shell中的输入与输出

转义字符:“\”

避免下一个字符被shell解释

echo常见-n(禁用转义字符) -e(可以使用转义字符)

#!/bin/bash

echo

-e "this 3 lines\n\n\n"

echo

"ok"

echo

"enter you name:"

read

name

echo

"enter you password:"

read

password

echo

$name $passwordshell中的命令行替换

替换

语法

含义

历史

!

前一个命令行

大括号

{}

指定的文本

代字号

~username

用户的主目录

变量

$,${...}

shell和环境变量

算术

$((...))

算术运算

命令替换

`...`,$(...)

运行在子shell中的命令的输出

路径名

*,?,[...],[^...]

文件系统中匹配的文件名

shell命令行的扩展与替换-路径名替换

通配符

用于匹配的字符称为通配符,例如:

*匹配任意字符或字符串,包括空字符串

?匹配任意一个字符

[...]匹配方括号中列出的任何单字符

如:

ls /dev/ttyS*

ls test0?.txt

ls test[0-2].txt

ls test[012][0-9].txt

shell命令行的扩展与替换-命令替换

命令替换

命令替换允许一个命令的输出来替换这个命令本身。命令替换在一个命令这样封装的时候发生:

$(command)或`command` (老式语法)

如:

date=$(date)

echo $date

shell命令行的扩展与替换-单引号与双引号

单引号(‘’)用于保持在引号内的每个字符的字面值。

双引号保持引号内的所有字符的字面值,除了$,``,\

算术替换用于算术计算:$(())中的shell变量取值将换成整数,如:var=45echo $(($var+3))注意只能用+-*/和(),并且只能做整数计算。shell测试语句条件测试:test或者[ ]可以用test或者[ ]测试一个条件是否成立,如果测试结果为真,则该命令退出状态为0,如果为假,状态为1。通过echo$?来输出结果文件测试格式:test option file或者[ option file ]

-b file测试文件是否为块设备文件-c file测试文件是否为字符设备文件-d file测试文件是否为目录-ffile测试文件是否为普通文件-e file测试文件是否存在-r file测试文件是否可读-s file测试文件是否非空-w file测试文件是否为可写-x file测试文件是否可执行示例:test-d /home/jerryecho $?结果为0,说明jerry是一个目录-a:逻辑与,操作符两边均为真,结果为真,否则为假。-o:逻辑或,操作符两边至少一边为真,结果为真,否则为假。!:逻辑否,条件为假,结果为真。示例:判断主目录中的文件install.log是否同时具有写入和执行的权限。test -w install.log -a-x install.logecho $?整数比较格式:testint1operatorint2-eq数值相等。-ne数值不相等。-gt第一个数大于第二个数。-lt第一个数小于第二个数。-le第一个数小于等于第二个数。-ge第一个数大于等于第二个数。示例:test8-eq3echo $?字符串测试格式:test option string或者[option string]=两个字符串相等。!=两个字符串不等。-z测试字符串是空字符串。-n测试字符串是非空字符串。s1 = s2相等s1 != s2 s1与s2不同s1 < s2s1的ASCII在s2前s1 > s2    s1的ASCII在s2后If语句i f语句测试条件,测试条件返回真(0)或假(1)后,可相应执行一系列语句。简单的if语句是:i f条件then命令f i注意:使用i f语句时,必须将t h e n部分放在新行,否则会产生错误。如果要不分行,必须使用命令分隔符。

现在简单i f语句变为:if条件;t h e n命令f ii f语句其格式为:if条件1then命令1elif条件2then命令2else命令3f icase语句c a s e语句为多选择语句。

可以用c a s e语句匹配一个值与一个模式,如果匹配成功,执行相匹配的命令。c a s e语句格式如下:case值i n模式1)命令1. . .;;模式2)命令2. . .;;e s a c取值后面必须为单词i n,每一模式必须以右括号结束。取值可以为变量或常数。匹配发现取值符合某一模式后,其间所有命令开始执行直至;;取值将检测匹配的每一个模式。一旦模式匹配,则执行完匹配模式相应命令后不再继续其他模式。如果无一匹配模式,使用星号*捕获该值,再接受其他输入。模式部分可能包括元字符,与在命令行文件扩展名例子中使用过的匹配模式类型相同,

即:*任意字符。?任意单字符。[..]类或范围中任意字符。for循环f o r循环一般格式为:for变量名i n列表d o命令1命令2⋯d o n e当变量值在列表里,f o r循环即执行一次所有命令,使用变量名访问列表中取值。命令可为任何有效的s h e l l命令和语句。变量名为任何单词。i n列表用法是可选的,如果不用它,f o r循环使用命令行的位置参数。i n列表可以包含替换、字符串和文件名,下面看一些例子。#!/bin/bashfor char in ab c d edoecho $chardone

或者#!/bin/bash#example:for cyclefor strdoecho $strdone./example.sha b c d ewhile循环w h i l e循环用于不断执行一系列命令,也用于从输入文件中读取数据,其格式为:

while命令d o命令1命令2. . .d o n e

linux shell 引号 参数,shell(三)变量,基本语法,单双引号相关推荐

  1. java sql 引号_java拼接sql语句里的单双引号

    一.场景描述 平时在用字符串拼接sql语句的时候,有没有遇到过下面的情况: 没错,就是单双引号问题.其实,关于双引号我们是容易理解的,sql语句是用String字符串拼接的,因此需要用到双引号.但是为 ...

  2. Shell 脚本 — 多行注释、开启子/不开启子进程执行、转义带颜色输出、读取键盘输入、输入输出重定向、单双引号、命令替换、读取变量、系统变量、正则过滤、算术运算、一行多条命令、字符串比较

    1. 多行注释 #!/bin/bash<< COMMENT This is multi line comment COMMENTecho "This is demo script ...

  3. Shell脚本,环境变量,位置变量,预定义变量,自定义变量,单引号双引号反引号用法,一般变量和交互式变量read定义,密文输入变量信息

    Shell脚本,变量,系统预设的环境变量,位置变量,预定义变量,用户的自定义变量 一.定义变量 1.以固定的名称存放可以变化的值 2.格式为 变量名=变量值 3.取消变量的格式 unset 变量名 4 ...

  4. Linux单双引号嵌套引发的小问题

    单双引号如何嵌套使用 最近有个小需求需要统计下ES中的文本结果,编辑和未编辑文本的占比,由于直接统计ES中的结果,这里直接写了个DSL查询脚本,初版脚本如下 curl -XGET 127.0.0.1: ...

  5. 单双引号与双引号之间的变量解析情况

    /*双引号可以解析变量 双引号包含单引号--在双引号之间的'$a'看做了一个整体*/ $a = 'Hello World!'; echo "'$a'"; 输入结果 'Hello W ...

  6. php单双引号的区别与foreach 遍历

    php单双引号的区别: (核心代码) $age = 123; echo '$age' 输出结果是 $age; echo "$age" 输出结果的是 123; 总结: echo 输出 ...

  7. 【php基础入门】运算符、流程控制语句及单双引号区别和模块化编程的使用详解

    目录 字符串的单引号和双引号区别 PHP 运算符 算数运算符 字符运算符 关系运算符 逻辑运算符 赋值运算符 错误抑制符 三元运算符 PHP 流程控制 分支语句 循环语句 模块化编程 今日相关函数 今 ...

  8. DM8联机逻辑备份perl脚本实现要点(单双引号、system和disql)

    概要 此文章非完整脚本功能分享,仅就实现逻辑备份功能进行分享. 问题背景 在编写DM8自动化备份perl脚本中,在涉及联机物理库级备份时,需要执行相关操作,正常情况下,相应语句如下(已简写,便于理解) ...

  9. python笔记22-literal_eval函数处理返回json中的单双引号

    前言 在做接口测试的时候,最常见的接口返回数据就是json类型,json类型数据实际上就是字串,通常标准的json格式是可以转化成python里面的对应的数据类型的 有时候开发返回的数据比较坑,不按常 ...

最新文章

  1. 26.2. Web UI
  2. aspen软件对电脑的要求_BIM软件对电脑配置的要求——Fuzor软件对电脑配置的要求...
  3. 指定类型的成员XX”不支持实体LINQ。只有初始化,成员单位,和实体导航性能的支持。...
  4. MEGA 视频目标检测 数据集 : ILSVRC2015 VID 说明
  5. gridview 在已有数据的基础上添加数据_基于Python的数据分析-1.语法基础(上)
  6. hdu-6165(tarjan+topusort)
  7. Chapter 4 : 单行函数
  8. 图像处理笔记(十八):模板匹配
  9. BCH编码——c语言代码
  10. 计算机类专业本科学生成长四阶段必读四本书推荐
  11. new bmap.label支持html,百度地图api使用文档marker标注label使用
  12. Mybatis的一个连接mysql的坑
  13. Windows10官网原版系统下载地址汇总
  14. Vue使用Swiper看这一篇就够了
  15. Vue项目axios在IE浏览器报promise错误的解决办法
  16. mac屏幕录像怎么录-ScreenFlow for mac完整安装-screenflow录屏录声音的方法
  17. Handlebars.js的下载及使用示例
  18. 无法安装64(32)office,已经安装32(64)office解决方法
  19. LINQ之Update
  20. 历史名人鲁迅介绍HTML个人网页作业作品下载 历史人物介绍网页设计制作 大学生英雄人物网站作业模板 dreamweaver简单个人网页制作

热门文章

  1. react领域里面jsx中的style的值为什么放到了{}中
  2. 大数据开发初学者学习路线_初学者的Web开发路线图
  3. api工具 graphql_为什么GraphQL是API的未来
  4. 残疾人软件开发_更高级别的可访问性:我使freeCodeCamp指南对残疾人可用的5种方式...
  5. 109_Power Pivot客户ABC(帕累托)分析度量值写法(非计算列)
  6. 图解高性能服务器开发两种模式,第四章 NETTY高性能架构设计
  7. python Scrapy 从零开始学习笔记(一)
  8. MySQL的初识(python开发者的第一印象)
  9. MongoDB高级——复制(副本集)
  10. 《scikit-learn》SVM(二)数据不均衡