linux系统——Shell编程之变量解释

- Shell能做什么

  • 自动化批量系统初始化程序 (update,软件安装,时区设置,安全策略…)
  • 自动化批量软件部署程序 (LAMP,LNMP,Tomcat,LVS,Nginx)
  • 应用管理程序 (KVM,集群管理扩容,MySQL,DELLR720批量RAID)
  • 日志分析处理程序(PV, UV, 200代码, !200代码, top 100, grep/awk)
  • 自动化备份恢复程序(MySQL完全备份/增量 + Crond)
  • 自动化管理程序(批量远程修改密码,软件升级,配置更新)
  • 自动化信息采集及监控程序(收集系统/应用状态信息,CPU,Mem,Disk,Net,TCP Status,Apache,MySQL)
  • 配合Zabbix信息采集(收集系统/应用状态信息,CPU,Mem,Disk,Net,TCP Status,Apache,MySQL)
  • 自动化扩容(增加云主机——>业务上线)
    zabbix监控CPU 80%+|-50% Python API AWS/EC2(增加/删除云主机) + Shell Script(业务上线)
  • 俄罗斯方块,打印三角形,打印圣诞树,打印五角星,运行小火车,坦克大战,排序算法实现
  • Shell可以做任何事(一切取决于业务需求)

- Shell脚本执行方式

  • 执行1:bash text.sh
  • 执行2:sh text.sh
  • 执行3:. text.sh
  • 执行4:source text.sh

1和2是子shell
3和4是本shell

- 变量类型

  • 自定义变量
  • 环境变量
  • 位置变量和预定义变量

- 自定义变量

自定义变量只能在当前shell中使用

  • 显示赋值:

示例:

1,定义变量:

变量名=变量值
ip=192.168.1.251
name=caixukun

2,调用变量:

$id   \\$+变量名即调用,但是没有效果,基本都用echo输出查看效果
echo  $id


3,查看变量:

set

4,取消变量:

unset

  • read从键盘读入变量值:

示例:

read  name
echo $nameread -p "请输入姓名: " name
echo $nameread -n 2 -p "姓名: " name
echo $nameread -t 5 -p "姓名: " name
echo $name


- 转意符

  • 双引号 —— 去掉空格的命令行含义
  • 单引号 —— 去掉所有字符,符号的含义
  • 反斜杠(捺) —— 去掉捺后一个字符或符号的含义
  • 反引号(``)—— 优先执行括起来的部分

- 环境变量

环境变量,可以在当前shell及子shell中使用

  • 定义环境变量:
export  变量名=变量值
export  name=caixukun或者写道开机自启文件中
vim  /etc/profile
export  name=caixukun
  • 调用,取消同自定义一样,查看要用env
env

- 位置变量和预定义变量

命令     参数1 参数2 参数3 ....9以后特殊定义
$1 $2 $3 $4 $5 $6 $7 $8 $9 ${10} ...预先定义过的变量
$0 脚本名
$* 所有的参数
$@ 所有的参数
$# 参数的个数
$$ 当前进程的PID
$! 上一个后台进程的PID
$? 上一个命令的返回值 0表示成功

示例:

# vim test.sh
#!/usr/bin/bash
echo "第2个位置参数是$2"
echo "第1个位置参数是$1"
echo "第4个位置参数是$4"echo "所有参数是: $*"
echo "所有参数是: $@"
echo "参数的个数是: $#"
echo "当前进程的PID是: $$"echo '$1='$1
echo '$2='$2
echo '$3='$3
echo '$*='$*
echo '$@='$@
echo '$#='$#
echo '$$='$$

执行后结果:

[root@localhost ~]# chmod +x 1.sh [root@localhost ~]# ./1.sh  1 2 3 4 5 6 7 8 9
第2个位置参数是2
第1个位置参数是1
第4个位置参数是4
所有参数是: 1 2 3 4 5 6 7 8 9
所有参数是: 1 2 3 4 5 6 7 8 9
参数的个数是: 9运算
当前进程的PID是: 1946
$1=1
$2=2
$3=3
$*=1 2 3 4 5 6 7 8 9
$@=1 2 3 4 5 6 7 8 9
$#=9
$$=1946

- 变量的运算

1,整数运算

  • 方法一:
方法一:expr
expr 1 + 2
expr $num1 + $num2 + - \* / %
+加
-减
\*乘
/除
%取余
  • 方法二:
方法二:$(( ))
echo $(($num1+$num2)) + - * / %
echo $((num1+num2))
echo $((5-3*2))
echo $(((5-3)*2))
echo $((2**3))      //(蜜)2的3次方
sum=$((1+2)); echo $sum
  • 方法三:
方法三:$[]
echo $[5+2] + - * / %
echo $[5**2]
  • 方法四:
方法四:let 表达式
let sum=2+3; echo $sum
let i++; echo $i

2,小数运算

小数运算
echo "2*4" |bc
echo "2^4" |bc
echo "scale=2;6/4" |bc
awk 'BEGIN{print 1/2}'
echo "print 5.0/2" |python

linux系统——Shell编程之变量解释相关推荐

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

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

  2. linux 系统 Shell语言 基础

    linux 系统 Shell语言 基础 第一章 Shell 编程 1 . 概述 ​ Shell是一个命令行解释器,它为用户提供了一个向Linux内核发送请求以便运行程序的界面系统级程序,用户可以用Sh ...

  3. 运维 - 第一阶段 - linux与shell编程

    linux与shell编程 讲师:墨竹 系统运维与linux 1.系统运维是什么 简单来说运维(Operation and maintenance)是指对公司硬件和软件的维护. 硬件包括:机房.机柜. ...

  4. Linux学习-Linux系统及编程基础笔记

    useradd zhangsan passwd zhangsan visudo往/etc/sudoers文件中添加zhangsan #visudo 找到如下的行 root ALL=(ALL) ALL ...

  5. (二)shell编程之变量定义与使用

    shell编程之变量定义与使用 SHELL编程模块课程目标 ① Shell的基本语法结构 如:变量定义.条件判断.循环语句(for.until.while).分支语句.函数和数组等: ② 基本正则表达 ...

  6. Shell编程之变量赋值和引用

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

  7. Linux _ Shell编程 — 功能语句

    Linux _ Shell编程 - 功能语句 一.说明性语句 二.常用功能性语句 1.常用功能性语句(read命令) 2.expr命令 三.结构性语句 条件测试语句 字符串测试 整数测试 文件的测试 ...

  8. Linux之shell编程篇-----Shell 函数和Shell 输入/输出重定向

    ​ 最近发现了一个挺厉害的人工智能学习网站,内容通俗易懂,风趣幽默,感兴趣的可以点击此链接进行查看:床长人工智能教程 废话不多说,请看正文! ​ Shell 函数 1. 自定义函数 linux she ...

  9. Linux系统及编程期末试题,《LINUX系统及其编程》考试试题及答案.doc

    <LINUX系统及其编程>考试试题及答案 <Linux系统及其编程>模拟练习参考答案 一.单项选择题 .Linux的根分区系统类型是 C . A. FAT16 B.FAT32 ...

最新文章

  1. php 任意文件上传,任意文件上传漏洞
  2. Java中工程、包、类介绍
  3. Wireshark网络抓包(一)——数据包、着色规则和提示
  4. 【动态规划】cf1034C. Region Separation
  5. matlab 抽样判决代码,matlab抽样判决器
  6. 正弦信号发生器设计——VHDL
  7. 【BZOJ2705】Longge的问题,数论练习
  8. 用python计算矩形面积结果四舍五入保留两位小数_你还在计算器开平方?太low了吧,学霸考场都用这种方法开平方...
  9. 漫步者蓝牙只有一边有声音_2019年上半年最具“诚意”的真无线劲挂蓝牙耳机新品...
  10. 在Java eclipse 中Spring Boot工具安装步骤
  11. 安川机器人如何注释化指令_安川机器人指令一览
  12. php 抓取百度快照时间,php获取网站百度快照日期的方法
  13. 如何理解线性赋范空间、希尔伯特空间, 巴拿赫空间,拓扑空间
  14. 【计算机毕业设计】015健身房管理系统设计与实现
  15. 如是言,一个关于格言的故事
  16. openshift Tekton pipeline 实践
  17. 那些年,我用过的虚拟主机
  18. python入门笔记(1)
  19. php 采集邮箱,采集邮箱的php代码(抓取网页中的邮箱地址)
  20. 论文查重系统需要注意哪些细节问题?

热门文章

  1. 金仓数据库KingbaseES Clusterware配置手册(搭建集群 )
  2. Huawei Deveco Studio安装教程
  3. Scrapy爬虫cookies设置的坑
  4. 【智能ABC】WIN10智能ABC的替换方案
  5. 多个PDF怎么合并成一个PDF文件?好用的方法学习一下
  6. 猿创征文|ES索引字段映射类型以及ES底层打分逻辑
  7. PBI培训(3):PBI常用DAX、M语言函数
  8. BDB 入门篇 第1章 Berkeley DB Java Edition简介
  9. 以太网解决方案实现4k/8k资源最大化和 OPEX 最小化
  10. LeetCode第1371题:每个元音包含偶数次的最长子字符串(中等)