shell编程及自动化运维----变量
16lz
2021-04-21
shell编程及自动化运维
一、变量
1、SHELL执行方式
- vim file1
echo “hello 2020”
read -p “请输入您的姓名:” name
echo “哈哈 $name 是大笨蛋” - bash file1
- sh file1 // bash和sh执行同一个文件
- . file1
- source file1 //同理
- 多种执行方式的区别
- bash和sh是子shell ,执行程序之后不改变当前状况,不变更路径
- ./ 和 source 是本shell
2、变量
(1)自定义变量
- 定义变量: 变量名=变量值
name=“666” //分号可加可不加
echo $nam
引用变量: $变量名不能以数字开头、等号左右两侧不能有空格、变量的值如果有空格,必须用引号包含
查看变量: echo $变量名
取消变量: unset 变量名
交互式变量
- read -p “请输入您测试的IP地址:” ip
- ping -c1 $ip &>/dev/null && echo " i p u p " ∣ ∣ e c h o " ip up" || echo " ipup"∣∣echo"ip
down" // - 双引号可以使变量中的空格,分开的部分称为一个整体
- 单引号,转义一切符号 echo $schoo $schoo 666
- 反引号是优先执行schoo=```date`` ` 2020年 05月 06日 星期三 14:57:13 CST
- 注意
- 命名只能使用英文字母,数字和下划线,首个字符不能以数字开头。
- 中间不能有空格,可以使用下划线(_)
- 不能使用标点符号
- 不能使用bash里的关键字(可用help命令查看保留关键字)
- 起变量名,使用五个字母以上
(2)整数运算
- expr
- 语法:expr 1 + 2 expr $num1 + $num2 (+ - * \ %取余)
- $(())
- echo ( ( (( ((num1+$num2))
echo $((num1+num2))
echo $((5-3*2))
echo $((2**3)) //(蜜)2的3次方
- $[]
- echo $[5+2] + - * / %
echo $[5**2]
- let
- let sum=2+3; echo $sum
let i++; echo $i
(3)小数运算(了解)
- 安装计算机程序bc
yum -y insatll bc
用法
echo “2*4” |bc
echo “2^4” |bc
echo “scale=2;6/4” |bcscale=2 保留小数点后面两位
(4)环境变量(了解)
- 直接声明:export back_dir2=/home/backup
- export back_dir1 将自定义变量转换成环境变量
- 作用范围: 在当前shell和子shell有效
- 想使变量在当前用户登陆后一直生效,可以将变量放到~/.bash_profile
- 想使变量在所有用户登陆后一直生效,可以将变量放到/etc/profile
(5)位置变量(了解)
- 位置变量语法
- 命令 参数1 参数2 参数3 …9以后特殊定义
$0 $1 $2 $3 $4 $5 $6 $7 $8 $9 …
- 总结
- 位置变量就是$1,$2,$3,$4
- 位置变量预先已经被定义过了
- 用户使用时,必须携带参数
- 位置变量不是程序设计的唯一方法。比如read也可以
(6)预定义变量(了解)
- $0 脚本名/程序名
$* 所有的参数
$# 参数的个数
$? 上一个程序的返回值(0是成功,非零失败)
$$ 程序的PID
更多相关文章
- 谁要是敢用Map传参数,我喵喵就打死他
- java 8 stream reduce详解和误区
- Servlet系列教材 (二)- 基础 - 如何获取浏览器提交的参数
- 变量系列教材 (八)- 什么是Java的表达式
- 变量系列教材 (七)- Java 中final修饰变量
- 变量系列教材 (六)- 什么是Java的作用域
- 变量系列教材 (五)- Java的命名规则
- 变量系列教材 (四)- 在Java中进行基本类型的类型转换
- 变量系列教材 (三)- 什么是Java的字面值