shell编程第三天(运算)
整数运算
expr
语法:expr 数字1 符号 数字2
expr可以让整数进行加减乘除和取余
expr 1 + 2
编写一个脚本计算两门的成绩总和
#!/bin/bash
read -p "请输入您的第一门成绩:" number1
read -p "请输入您的第二门成绩:" number2
echo -n "总成绩是:"
expr $number1 + $number2
$(())
$(())有运算能力,可以进行加减乘除和取余的运算,它的语法是:
$((整数1 符号 整数2))
echo $((1 + 2))
3
$[]
语法:$[整数1 符号 整数二]
echo $[2 + 3]
5
let
let关键字做变量运算,
let sum=2+3;echo $sum
5
let可以做自增操作
let i++;echo $i
此时的i++就相当于i=i+1
小数运算
安装一个小数运算的工具
yum install -y bc
将数字输出在屏幕中并用管道交给bc运算,最后得出结果
echo "2 + 4" | bc
6
bc是一个交互运算器,支持浮点运算。
scale=3表示小数点后保留三位小数
echo "scale=3;6/4" | bc
1.500
也可以使用bc命令进行计算
环境变量
自定义变量是只在当前的shell有效,如果要想别人用的话,需要加入环境变量确保其他人也可以用
export back_dir2=/home/backup# 声明环境变量
export back_dir1# 将自定义变量转换成环境变量
想让变量在当前用户登录后一直的生效,可以将变量放在~/.bash_profile
vi ~/.bash_profile
如果想让变量,在所有用户登陆后一直生效,可以讲变量放置在/etc/profile中
vi /etc/profile
比如系统中也有一些环境变量
echo $USER
查看系统的环境变量
env
位置变量和预定义变量
位置变量的语法:命令 参数1 参数2 参数3..........9以后特殊定义
$0 $1 $2 $3 $4 $5 $6 $7 $8 $9....
vi ping3.sh
. ping.sh 192.168.83.163 192.168.83.173
$0 # 表示脚本的名称
$* # 所有的参数
$# # 参数的个数
$? # 作为上一个程序的返回值(0代表的是成功,非0代表的是失败)
$$ # 程序的PID
$? # 作为上一个程序的返回值(0代表的是成功,非0代表的是失败)
$$# 程序的PID
现在使用的是远程登录centos7,所以应该是pts
进程是有关系的可以使用pstree
(进程树)进行查看
安装程序
yum -y install psmisc
pstree
总结:
位置变量就是$1 $2 $3
位置变量是预先定义过了的
用户使用时,必须要携带参数
位置变量不止程序设置的唯一方法,比如read也是可以的
练习
编写一个自动创建用户并配置密码的脚本文件
vi useradd.sh
#!/bin/bash
read -p "请输入用户名" user
read -p "请输入用户的密码" password
useradd $user
echo "$password" | passwd --stdin $user &> /dev/null
echo "$user已经创建,$user的密码是$password"