第1章 变量
一、shell解释器有哪些(Linux支持的shell有哪些呢)?
cat /etc/shells 或者chsh -l
例图:
二、变量的类型:
(一)自定义变量:
特性:示例: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"可以查看所有变量(包括自定义变量和环境变量)取消变量:unset变量名作用范围:仅在当前shell中有效(二)变量赋值(定义变量):1、显式赋值:变量名=变量值示例: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 只记录几个字符
例图:
3、3种引号:
(1)” " 弱引用:脱去空格
(2)’ ’ 强引用:脱去所有字符
(3) 命令替换 等价于 $() 反引号中的shell命令会被先执行
例图:
(三)环境变量:
定义环境变量: 方法一 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”
例图:
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 '
=
′
='
=′$
例图:
三、变量的运算:
(一)整数运算:
1、方法一:expr
expr $num1 + KaTeX parse error: Undefined control sequence: \* at position 10: num2 + - \̲*̲ / % +加 -减 \*乘 …(())
echo
(
(
((
((num1+$num2)) + - * / %
echo $((num1+num2))
echo $((5-32))
echo $(((5-3)2))
echo
(
(
2
∗
∗
3
)
)
/
/
(
蜜
)
2
的
3
次
方
s
u
m
=
((2**3)) //(蜜)2的3次方 sum=
((2∗∗3))//(蜜)2的3次方sum=((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
例图:举例方法一
(二)小数运算:
echo "24” |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做了解
例图: