Linux Shell编程第1章 变量

目录

 

SHELL 前言

BASH SHELL1

变量

变量的类型

1. 自定义变量

2. 环境变量(了解)

3. 位置变量和预定义变量(了解)

变量的运算

1. 整数运算

2. 小数运算(了解)

变量实例


SHELL 前言

什么是shell

shell(计算机壳层)

在计算机科学中,Shell俗称壳(用来区别于核),是指“为使用者提供操作界面”的软件(命令解析器)。它类似于DOS下的command.com和后来的cmd.exe。它接收用户命令,然后调用相应的应用程序。

shell语言的特点

SHELL语言是指UNIX操作系统的命令语言,同时又是该命令语言的解释程序的简称。

Shell本身是一个用C语言编写的程序,它是用户使用Unix/Linux的桥梁,用户的大部分工作都是通过Shell完成的。

Shell既是一种命令语言,又是一种程序设计语言。作为命令语言,它交互式地解释和执行用户输入的命令;

作为程序设计语言,它定义了各种变量和参数,并提供了许多在高级语言中才具有的控制结构,包括循环和分支。

它虽然不是Unix/Linux系统内核的一部分,但它调用了系统核心的大部分功能来执行程序、

建立文件并以并行的方式协调各个程序的运行。

因此,对于用户来说,shell是最重要的实用程序,

深入了解和熟练掌握shell的特性极其使用方法,是用好Unix/Linux系统的关键。

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

shell多种执行方式

执行1:bash   ping01.sh

执行2:sh   ping01.sh

执行3:.  bash.sh

执行4: source bash.sh

1和2的方式,是子shell
3和4的方式,是本shell

多种执行方式的区别

1.准备环境

vim bash.sh
#!/usr/bin/bash
cd /home/
ls

2. 一种执行方式测试
. bash.sh

3.观察目录改变了。说明影响的是当前。并使用子shell执行方式执行。

该种执行方式,是不同于前者SUB shell执行。 
而是在当前shell执行,用于影响当前shell环境。

BASH SHELL1

一、第二阶段SHELL课程概览

1. shell特性  易学,高效

2. shell变量

3. shell条件测试,判断

4. shell数值运算

5. 流控、循环

6. 企业项目

二、shell解释器有哪些

shell 命令就是前一阶段所学习的大部分命令。 cp ls date组合到一起。

Linux支持的shell有哪些呢?
cat /etc/shells

chsh -l

变量

变量的类型

1. 自定义变量

特性

1. 自定义变量(示例:ping01.sh引入变量)
定义变量: 变量名=变量值 变量名必须以字母或下划线开头,区分大小写 ip1=192.168.2.115 
引用变量: $变量名 或 ${变量名}
查看变量: echo $变量名; "set"可以查看所有变量(包括自定义变量和环境变量)
取消变量: unset 变量名
作用范围: 仅在当前shell中有效

示例0:

ping -c1 192.168.100.10 &>/dev/null  && echo 192.168.100.10up || echo 192.168.100.10down        、//使用变量前。麻烦

#!/bin/bash
ip=192.168.100.10
ping -c1 $ip &>/dev/null  && echo $ip  up ||   echo "$ip  down"          //使用变量后,简洁

变量赋值(定义变量):

1. 显式赋值

变量名=变量值
示例:

2. read 从键盘读入变量值

read 变量名
read -p "提示信息: " 变量名


read -t 5 -p "提示信息: " 变量名    //-t 等待5秒,后超时


read -n 2 变量名            //-n  只记录几个字符

 

注意事项:3种引号

1." " 弱引用     //脱去空格
   ' ' 强引用        //脱去所有字符

2.` ` 命令替换           等价于 $() 反引号中的shell命令会被先执行

2. 环境变量(了解)

定义环境变量: 方法一 export back_dir2=/home/backup 
                方法二 export back_dir1 将自定义变量转换成环境变量
引用环境变量: $变量名 或 ${变量名}
查看环境变量: echo $变量名 env 例如env |grep back_dir2
取消环境变量: unset 变量名
变量作用范围: 在当前shell和子shell有效 !!!!!!!!!!!!!!!!!!!!!!!

3. 位置变量和预定义变量(了解)

 

语法

命令     参数1 参数2 参数3 ....9以后特殊定义
$1 $2 $3 $4 $5 $6 $7 $8 $9 ${10} ...

预先定义过的变量
$0 脚本名
$* 所有的参数
$@ 所有的参数
$# 参数的个数
$$ 当前进程的PID
$! 上一个后台进程的PID
$? 上一个命令的返回值 0表示成功 

示例1:

# vim test,sh

运行结果如图:

变量的运算

1. 整数运算

方法一:expr

方法一: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 "scale=2;6/4" |bc
awk 'BEGIN{print 1/2}'
echo "print 5.0/2" |python

变量实例

编写脚本,创建用户userA,并为用户设置初始密码为123456(有变量)

#!/bin/bash

  name=userA
  useradd $name

echo "123456 " | passwd --stdin $name &> /dev/null
echo "$name 创建成功,密码是:123456 "

编写脚本,创建用户userA,并为用户设置初始密码为123456(有变量。键盘读取)

#!/bin/bash

  read -p "请输入您要创建的用户名:" name
  useradd $name

echo "123456 " | passwd --stdin $name &> /dev/null
echo "$name 创建成功,密码是:123456 "

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值