1、什么是shell变量?本地变量、环境变量、变量替换(显示变量)、位置变量、标准变量、特殊变量、影响变量的命令

2、本地变量:本地变量在用户现在的shell生命期的脚本中使用

variable-name=value

set显示本地所有的变量

readonly variable-name

例子:

LOCALTEST="test"

echo ${LOCALTEST}

readonly LOCALTEST

设置了readonly之后不能对变量进行改变,要谨慎使用

readonly命令,查看当前制度的变量

3、环境变量用于所有用户进程(经常称为子进程)。登陆进程称为父进程。shell中执行的用户进程称为子进程。不像本地变量(只用于现在的shell)环境变量可用于所有子进程,这包括编辑器、脚本和应用。

$HOME/.bash_profile(/etc/profile)

export(设置环境变量)

env(查看环境变量)

4、变量替换:用变量的值替换它的名字。echo

在变量名前加$,使用echo命令可以显示单个变量取值

例:testvar="this is a test"

echo ${testvar}

${Variable name}            显示实际值到variable name

${Variable name:+value}     如果设置了variable name,则显示其值value,否则,为空

${Variable name:?value}     如果未设置variable name,显示用户定义错误信息value

${Variable name:-value}     如果未设置variable name,则显示其值value

${Variable name:=value}     如果未设置variable name,设置其职,并显示

unset:unset variable-name(变量清除)

5、位置变量

位置变量表示$0,$1......$9(共10个,超出10个用其他方法)

向脚本中使用位置参数(find / -name $1 print)

向系统命令传递参数

6、标准变量

bash默认建立了一些标准环境变量,可在/etc/profile中定义(EXINIT(定义vi)、HOME(定义主目录)、IFS(定义linux字符之间用什么分割,理论上可以修改为任意字符)、LOGNAME、、MAIL(当前用户的存储邮箱)、MAILCHECK(每隔多少秒检查是否有邮件)、MAILPATH(有多个邮箱的地址,用:分隔)、TERM(终端类型)、PATH(可执行文件的寻找目录,用:分割)、TZ(时区)、PS1(登陆后,输入命令前端文字的设置)、PS2、PWD(当前目录)、SHELL(当前运行的是那个shell)、MANPATH(帮助手册存放)、TERMINFO(终端类型的配置信息))

7、特殊变量

$#(传递到脚本的参数个数)

$*(以一个单字符串显示所有向脚本传递的参数,与位置变量不同,此选项参数可超过9个)

$$(脚本运行的当前进程ID号)

$!(后台运行的最后一个进程的进程ID号)

$@(与$#相同,但是使用时加引号,并在引号中返回每个参数)

$-(显示shell使用的当前选项,与set命令功能相同)

$?(显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误)

8、影响变量的命令

declare 设置或显示变量

-f    只显示函数名

-r    创建只读变量(declare和typeset)

-x    创建转出变量

-i    创建整数变量

使用+替代-,可以颠倒选项的含义

export 用于创建传给子shell的变量

-- 表明选项结束,所有后续参数都是实参

-f 表明在"名-值"对中的名字是函数名

-n 把全局变量转换成局部变量。换句话说,命令的变量不再传给shell

-p 显示全局变量列表

readonly 用于显示或设置只读变量

-- 表明选项结束

-f 创建只读变量

set 设置或重设各种shell

shift [n] 用于移动位置变量,调整位置变量,使$3的值赋予$2,$2的值赋予$1

typeset 用于显示或设置变量

是declare的同义词

unset 用于取消变量的定义

-- 表明选项结束

-f 删除只读变量,但不能取消从shell环境中删除指定的变量和函数。如PATH,PS1,PS2,PPID,UID,EUID等的设置。

9、引用的必要性

变量和替换操作,在脚本中执行变量替换时最容易犯的一个错误就是引用错误

使用双引号可引用除字符$、`、\外的任意字符或字符串

10、单引号

单引号与双引号类似,不同的是shell会忽略任何引用值。换句话说,如果屏蔽了其特殊含义,会将引号里的所有字符,包括引号都作为一个字符串

11、反引号

反引号用于设置系统命令的输出到变量,shell将反引号中的内容作为一个系统命令,并执行其内容。

12、反斜杠

如果一个字符有特殊含义,反斜杠防止shell误解其含义,即屏蔽其特殊含义

下述字符包含有特殊意义:&  *  +  ^  $  `  "  |  ?

13、运算符

运算符是对计算机发的指令

运算对象:数字、字符(字面值)、变量、表达式

表达式:运算符和运算对象的组合体

14、按位运算符

~  <<  >>  &  |  ^

$[ ]表示形式告诉shell对方括号中的表达式求值

位运算符                                说明

~op1        反运算符,把op1中所有的二进制为1的变为0,0变为1

op1<<op2    左移运算符,把op1中的二进制位向左移动op2位,忽略最左端移出的各位,最右端                    的各位补上0值,每做一次按位左移就有实现op1乘以2

op1>>op2    右移运算符,把op1中的二进制向右移动op2位,忽略最右端移出的各位,最左端的                    各位补上0值,每做一次按位左移就有实现op1除以2

op1&op2     与比较运算符,op1和op2对应位,对于每个二进制位来说,如果两者该位都是1,则                    结果为1,否则结果为0

op1~op2     异或运算符,比较op1和op2的对应位,对于每个二进制位来说,如果两者该位互                    补,则结果为1,否则,结果为0

op1|op2     或运算符,比较op1和op2的对应位,对于每个二进制位来说,如果两者该位有一个                    是1或者都是1,则结果位为1,否则,结果位为0

15、逻辑运算符 (&&  ||  ==  !=)

16、赋值运算符(=、+=、-=、*=、/=、%=、^=、|=、<<=、>>=)

let $count = $count + $change

let $count + = $change

17、表达式替换

$[]和$(( )):习惯使用$[ ],所有shell的求值都是用整数完成

$[ ]可以接受不同基数的数字:[base#n]n表示基数从2到36的任何基数

例:echo $[10#8+1]表示8进制的10加1

转载于:https://blog.51cto.com/7200921/1333553

linux shell学习笔记(二) 变量和运算符相关推荐

  1. Bash Shell学习笔记二

    1.||.&& 和&.|的区别 ||和&&的执行是从左到右,而&和|的执行是两边到中间的(未实际测试,只能确认它不是按顺序执行的) ||和&&a ...

  2. Linux shell 学习笔记(4)— linux 环境变量(全局变量、局部变量及变量持久化)

    1. 环境变量概念及分类 bash shell 用一个叫作环境变量(environment variable)的特性来存储有关 shell 会话和工作环境的信息(这也是它们被称作环境变量的原因).这项 ...

  3. Linux | Shell 学习笔记(二)Shell 流程控制 if、case、for、while| read读取输入 | 函数的使用 | cut、sed、awk、sort命令 +Demo

    文章目录 参考资料 运行环境 一.流程控制 1.1 if 判断 1.2 case 语句 1.3 for 循环 1.4 while 循环 二. read 读取控制台输入 三.函数 3.1 系统函数 ba ...

  4. Linux shell 学习笔记(7)— 构建基本脚本(变量、重定向、管道、状态码)

    1. 使用多个命令 如果要两个命令一起运行,可以把它们放在同一行中,彼此间用分号隔开. $ date ; who Mon Feb 21 15:36:09 EST 2014 Christine tty2 ...

  5. Linux shell 学习笔记(16)— shell 入门总结

    1. Shell 变量 Shell 变量包括自定义变量和环境变量: 自定义变量:脚本中自己命名定义的变量,通常为局部变量,其他 Shell 程序不能访问到: 环境变量,操作系统已定义的变量,如 PAT ...

  6. Linux shell 学习笔记(12)— linux 信号、后台运行脚本、作业控制、定时运行任务

    1. 处理信号 1.1 Linux 信号 常见的 Linux 信号如下表所示: 信号 值 描述 1 SIGHUP 挂起进程 2 SIGINT 终止进程 3 SIGQUIT 停止进程 9 SIGKILL ...

  7. Linux shell 学习笔记(10)— 处理用户输入(命令行读取参数、读取用户输入、超时处理)

    1. 命令行参数 向 shell 脚本传递数据的最基本方法是使用命令行参数.命令行参数允许在运行脚本时向命令行添加数据. $ ./addem 10 30 本例向脚本 addem 传递了两个命令行参数( ...

  8. linux Shell学习笔记第五天

    第五天:函数与任务调度 函数的优势 分而治之f 协同合作 方便管理 维护简单 函数的结构 function 函数名() { 命令1 命令2 命令3 } 函数的参数传递 向函数传递参数就像在一般脚本中使 ...

  9. Shell学习笔记 - 环境变量配置文件(转)

    一.source命令 功能:在当前bash环境下读取并执行配置文件中的命令 1. 命令格式 source 配置文件  或  . 配置文件 2. 命令示例 [root@localhost ~]# sou ...

最新文章

  1. 新数学丛书《连分数》 习题 3.2
  2. layer iframe层的使用,传参
  3. SpringData ElasticSearch入门案例
  4. linux升级tls,为CentOS升级OpenSSL 让Nginx支持TLS 1.2
  5. 数据光端机设备性能指标介绍
  6. 聊聊Spring家族中的那几百个注解
  7. linux 扫描开放的端口命令,如何在 Linux 中检查(扫描)开放端口
  8. 华为m2青春版刷机android6,华为揽阅M2青春版线刷刷机教程_揽阅M2 LTE版救砖rom刷机包...
  9. mysql 合并同类项_使用Excel处理交易数据同一ID下的多条交易记录
  10. 传智博客JAVA基础第二十三天
  11. 花园 洛谷p1357
  12. WSL2 通过 USBIP 连接USB串口设备 JetsonUSB备份刷机
  13. 教程篇:《基础模块2》金蝶K3WISE15.0-注册套打教程
  14. python汽车租赁程序_python数据分析实例:共享单车租用影响因素探索
  15. 编写Python爬虫抓取豆瓣电影TOP100及用户头像的方法
  16. 基于Python的微信朋友圈数据可视化分析之个性签名
  17. RabbitMQ与Erlang的版本对应关系
  18. win10 网络突然连不上,解决办法
  19. 两个优惠券CSS样式
  20. (四)生产者消费者模式

热门文章

  1. 蓝宝石显卡bios_这操作竟能让显卡性能暴涨?原来不是黑科技,小白都会
  2. 人工智能可控核聚变量子计算机,中国终于实现了可控核聚变
  3. docx文档怎么排列图片_“胶水语言”办公自动化Word篇——使用Python编辑和读取Word文档
  4. 计算机竞赛湖北有哪些,我校29名学生在全国大学生数学竞赛湖北赛区获奖
  5. Hibernate VS iBATIS
  6. 属格-my father's car和whose_32
  7. 如何在电话中交谈_11
  8. 用python语言模拟微信红包_python 模拟微信抢红包 基础语法实现demo
  9. python server酱_Python 超简单的邮件发送方法
  10. 2017.4.27 道路游戏 思考记录