#我的第三十堂云计算课# #Linux Shell编程及自动化运维实现 第1章 变量 #

第1章 变量

一、shell解释器有哪些(Linux支持的shell有哪些呢)?
cat /etc/shells 或者chsh -l
例图:
#我的第三十堂云计算课# #Linux Shell编程及自动化运维实现 第1章 变量 #_第1张图片
二、变量的类型:
(一)自定义变量:
特性:示例:ping01.sh引入变量
定义变量: 变量名=变量值 变量名必须以字母或下划线开头,区分大小写 ip1=192.168.2.115
引用变量: $变量名 或 ${变量名}
查看变量: echo 变 量 名 ; " s e t " 可 以 查 看 所 有 变 量 ( 包 括 自 定 义 变 量 和 环 境 变 量 ) 取 消 变 量 : u n s e t 变 量 名 作 用 范 围 : 仅 在 当 前 s h e l l 中 有 效 ( 二 ) 变 量 赋 值 ( 定 义 变 量 ) : 1 、 显 式 赋 值 : 变 量 名 = 变 量 值 示 例 : i p 1 = 192.168.1.251 s c h o o l = " Q i n g H u a " t o d a y 1 = ‘ d a t e + t o d a y 2 = 变量名; "set"可以查看所有变量(包括自定义变量和环境变量) 取消变量: unset 变量名 作用范围: 仅在当前shell中有效 (二)变量赋值(定义变量): 1、显式赋值:变量名=变量值 示例: ip1=192.168.1.251 school="QingHua" today1=`date +%F` today2= ;"set"()unsetshell1=ip1=192.168.1.251school="QingHua"today1=date+today2=(date +%F)
2、read 从键盘读入变量值:
read 变量名
read -p “提示信息: " 变量名
read -t 5 -p “提示信息: " 变量名 //-t 等待5秒,后超时
read -n 2 变量名 //-n 只记录几个字符
例图:
#我的第三十堂云计算课# #Linux Shell编程及自动化运维实现 第1章 变量 #_第2张图片
3、3种引号:
(1)” " 弱引用:脱去空格
(2)’ ’ 强引用:脱去所有字符
(3) 命令替换 等价于 $() 反引号中的shell命令会被先执行
例图:
#我的第三十堂云计算课# #Linux Shell编程及自动化运维实现 第1章 变量 #_第3张图片
(三)环境变量:
定义环境变量: 方法一 export back_dir2=/home/backup
方法二 export back_dir1 将自定义变量转换成环境变量
引用环境变量: $变量名 或 ${变量名}
查看环境变量: echo $变量名 env 例如env |grep back_dir2
取消环境变量: unset 变量名
变量作用范围: 在当前shell和子shell有效 !
注意:使变量开机、登陆生效,将变量放到 /etc/profile中(开机启动文件)
(四)位置变量和预定义变量:
1、位置变量:
命令 参数1 参数2 参数3 …9以后特殊定义
$1 $2 $3 $4 $5 $6 $7 $8 $9 ${10} …
示例:vim 11.sh
#!/usr/bin/bash
echo “第2个位置参数是$2”
echo “第1个位置参数是$1”
echo “第4个位置参数是$4”
例图:
#我的第三十堂云计算课# #Linux Shell编程及自动化运维实现 第1章 变量 #_第4张图片
2、预先定义过的变量:
$0 脚本名
$* 所有的参数
$@ 所有的参数
$# 参数的个数
KaTeX parse error: Can't use function '$' in math mode at position 11: 当前进程的PID $̲! 上一个后台进程的PID $…"
echo ‘$1=’$1
echo ‘$2=’$2
echo ‘$3=’ 3 e c h o ′ 3 echo ' 3echo=’ ∗ e c h o ′ * echo ' echo@=’ @ e c h o ′ @ echo ' @echo#=’KaTeX parse error: Expected 'EOF', got '#' at position 1: #̲ echo ' = ′ =' =$
例图:
#我的第三十堂云计算课# #Linux Shell编程及自动化运维实现 第1章 变量 #_第5张图片
三、变量的运算:
(一)整数运算:
1、方法一:expr
expr $num1 + KaTeX parse error: Undefined control sequence: \* at position 10: num2 + - \̲*̲ / % +加 -减 \*乘 …(())
echo ( ( (( ((num1+$num2)) + - * / %
echo $((num1+num2))
echo $((5-3
2))
echo $(((5-3)2))
echo ( ( 2 ∗ ∗ 3 ) ) / / ( 蜜 ) 2 的 3 次 方 s u m = ((2**3)) //(蜜)2的3次方 sum= ((23))//23sum=((1+2)); echo s u m 3 、 方 法 三 : sum 3、方法三: sum3[]
echo $[5+2] + - * / %
echo $[5**2]
4、方法四:let (let 表达式)
let sum=2+3; echo $sum
let i++; echo $i
例图:举例方法一
#我的第三十堂云计算课# #Linux Shell编程及自动化运维实现 第1章 变量 #_第6张图片
(二)小数运算:
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
说明:bc:交互运算器(注意:若没有请提前安装:yum -y install bc);scale=2 保留小数点后面两位;awk和python做了解
例图:
#我的第三十堂云计算课# #Linux Shell编程及自动化运维实现 第1章 变量 #_第7张图片

你可能感兴趣的:(云计算,shell)