bash中,所有变量的值默认均为字符串。

1. 变量操作

  • 调用变量
$变量
  • 查看变量(所有类型)
set
  • 删除变量
unset 变量

2. 变量分类

2.1 自定义变量

自定义变量仅对当前Shell有效;

自定义变量的操作:

# 定义变量
变量=变量值
# 其它操作见<1.变量操作>
2.2 环境变量

环境变量对当前Shell及子Shell有效;如果把环境变量写入配置文件,则它对所有shell生效。

环境变量的操作:

# 定义环境变量
export 环境变量=环境变量值
# 查看环境变量
env
# 其它操作见<1.变量操作>

2个重要的环境变量:

$PATH :系统查找命令的路径
$PS1:命令提示符
2.3 位置参数变量

位置参数变量的作用在于执行命令(脚本)的同时,接收需要的参数。

  • $n

    $0表示命令本身,$1-$9表示第1-9个参数,第10个及以上的参数需要使用${n},如:${10}
  • $*

    所有的参数(作为一个整体)
  • $@

    所有的参数(多个参数)
  • $#

    参数的个数
2.4 预定义变量
  • $?

    $?表示上一个命令的执行结果,0:成功;1-255:失败。
  • $$

    当前进程的进程号(PID)
  • $!

    后台运行的最后一个进程的进程号

3. 读取键盘输入

读取键盘输入需要用到一个命令:read,但read的功能不仅仅如此。详细用法又需要自行查看帮助吧,它是bash built-in commands。

read [-ers] [-a 数组] [-d 分隔符] [-i 缓冲区文字] [-n 读取字符数] [-N 读取字符数] [-p 提示符] [-t 超时] [-u 文件描述符] [名称 ...]

4. declare命令:

declare命令的作用:设置变量值和属性(Set variable values and attributes)

声明变量并赋予属性,如果没有给定变量名,则显示所有变量的属性和值。

declare [-aAfFgilrtux] [-p] [name[=value] ...]

-p    display the attributes and value of each NAME

Options which set attributes:
-i to make NAMEs have the 'integer' attribute(声明为数值型)
-l to convert NAMEs to lower case on assignment(转小写,只影响declare之后的赋值)
-r to make NAMEs readonly(只读)
-u to convert NAMEs to upper case on assignment(转大写,只影响declare之后的赋值)
-x to make NAMEs export(环境变量)
Using `+' instead of `-' turns off the given attribute.

5. 变量运算(数值运算)

5.1 运算类型:
  • 逻辑运算:!(非)、&&(与)、||(或)
  • 算术运算:*(乘)、/(除)、%(模)、+(加)、-(减)
  • 位运算: <<(左移)、>>(右移)、&(位与)、|(位或)、^(位异或)
  • 比较运算:>、<、>=、<=、==、!=
  • 赋值运算:=、+=、-=、*=、/=、%=、&=、|=、^=、<<=、>>=
5.2 运算形式
  • declare -i 变量,声明为数值型,再进行运算
  • expr、let数值运算工具

    let VAR=算术运算表达式

    VAR=$(expr $ARG1 $OP $ARG2)
  • $[]、$(())

    VAR=$[算术运算表达式]

    VAR=$((算术运算表达式))

示例

[root@localhost ~]# a=11
[root@localhost ~]# b=22
[root@localhost sh]# x=$[a+b];echo $x
33
[root@localhost sh]# y=$((a+b));echo $y
33
[root@localhost sh]# let z=a+b;echo $z
33
[root@localhost sh]# m=$(expr $a + $b);echo $m
33
[root@localhost sh]# declare -i aa;declare -i bb;declare -i cc
[root@localhost sh]# aa=11;bb=22;cc=$aa+$bb;echo $cc
33

推荐最后一种方式,简单、便捷、容易理解。

bash编程-Shell变量的更多相关文章

  1. shell 编程 && bash 简介(shell 变量、shell操作环境、数据流重导向、管线命令、shell script)

    如何学习一门编程语言 数据类型 运算符 关键字 1 认识BASH 这个shell linux是操作系统核心,用户通过shell与核心进行沟通,达到我们想要的目的.硬件.核心.用户之间的关系: 原理:所 ...

  2. bash编程-Shell基础

    1. Shell脚本执行方式 直接运行,需要在脚本文件头部指定解释器,如#!/bin/bash ./myshell.sh 运行时指定shell解释器 bash myshell.sh 2. Shell命 ...

  3. BASH 编程之变量高级篇

    内部变量 • $$与$BASHPID都代表着执行程序的进程 ID,我们可以通过 echo 打印,并用 ps 指令检查得到相同的进程 ID [root@oracle ~]# echo $BASHPID ...

  4. [shell] Bash编程总结

    由于工作需要,之前的几个月写了一些Bash脚本,主要完成自动测试.打包.安装包等.虽然相比C++编程,要简单.傻瓜,但其在类Unix系统中可以大大提高工作的效率.所以在此对脚本编程过程中一些注意事项进 ...

  5. 【shell编程基础1】shell变量篇

    Bash shell bash shell 是bourne shell 的升级版,“bourne again shell”.ubuntu的默认shell. 预备知识 1. "#!" ...

  6. Linux学习——shell编程之变量

    shell编程之变量:Linux shell编程基础中的变量. 包括Bash变量的分类和各变量的详细使用,如:用户自定义变量.环境变量.语系变量.位置参数变量和预定义变量. 1:什么是Bash变量? ...

  7. Shell脚本编程(二):shell变量

    定义变量 定义变量时,变量名不加美元符号($,PHP语言中变量需要),如: your_name="runoob.com" 注意,变量名和等号之间不能有空格,这可能和你熟悉的所有编程 ...

  8. 08 bash特性--shell脚本编程入门

    shell脚本编程入门 编程语言介绍 编程语言分为:机械语言.汇编语言和高级语言: 计算机能识别的语言为机械语言,而人类能学习的并且能够方便掌握的为高级语言,所以,我们所编写的程序就要通过编译来转换成 ...

  9. Shell编程-02-Shell变量

    目录 什么是Shell变量 变量类型 环境变量初始化及其对应文件的生效顺序 什么是Shell变量     在初等数学数学方程式中,我们会经常碰到类似于这样的方程式:y=x+1 ,等号左右两边的x和y称 ...

随机推荐

  1. web和app的简单测试区别和工具介绍

    首先说一下我对Web自动化测试与CS自动化测试的认识.从宏观对比都是通过脚本自动化完成功能的验证,区别不大.Web测试更为显著的浏览器兼容性.安全,以及与Web技术相关的表单测试.链接测试等,其实都是 ...

  2. Dom文本应用-表格隔行间亮样式

    效果:  隔行一个颜色,鼠标移上去,被选中的那一行就变颜色,其次,鼠标离开其区域,颜色又变回原来的颜色. 一.表格隔行间亮样式-HTML代码 首先我们要有个表格 <table id='tab1' ...

  3. 一次sendmsg的改造过程

    比较蛋疼的一个改造过程,简单记录一下. 场景:用户态使用sendmsg发包,tcp报文,由于内核实现过程中存在一次kernel_read,也就是存在将pagecache中的内容拷贝一次的问题. 为了减 ...

  4. MySQL中的sort_buffer_size参数大小的设置问题

    看到sort_buffer_size这个参数(connect级别的参数,MySQL5.7,默认值是1048576字节,也就是1MB)的默认值这么小,想着是不是可以调大一点,反正内存动不动几十个GB的, ...

  5. ELK Redis高性能加速

    1.下载redis并安装好 wget http://download.redis.io/releases/redis-2.8.13.tar.gz tar zxf redis-.tar.gz cd re ...

  6. cdnbest架设cdn同一个源用不同的端口访问如何设置

    在站点里的应用防火墙-->高级设置里配置 比如test.com要同时用80和88访问

  7. java学习笔记(四):import语法

    Import 语法是给编译器寻找特定类的适当位置的一种方法. 创建一个Employee 类,包括四个实体变量姓名(name),年龄(age),职位(designation)和薪水(salary). p ...

  8. 【Django】关于上传图片遇到的问题

    今天测试上传图片的时候,发现一只报错说找不到文件:FileNotFoundError 通过检查路径的输出,发现首先在settings配置路径的时候有问题 MEDIA_ROOT=os.path.join ...

  9. linux grep (linux查找关键字在php出现的次数)

    http://www.th7.cn/system/lin/201508/127681.shtml 查找CleverCode在当前目录以及子目录,所有的php出现大于0的次数. # find -type ...

  10. 373. Find K Pairs with Smallest Sums 找出求和和最小的k组数

    [抄题]: You are given two integer arrays nums1 and nums2 sorted in ascending order and an integer k. D ...