第四十二集 Shell脚本 变量


shell

Shell是一种脚本语言,那么,就必须有解释器来执行这些脚本,常见的脚本解释器有:
bash:是Linux标准默认的shell。bash由Brian Fox和Chet Ramey共同完成,是BourneAgain Shell的缩写,内部命令一共有40个。
sh: 由Steve Bourne开发,是Bourne Shell的缩写,sh 是Unix 标准默认的shell。
另外还有:ash、 csh、 ksh等。

Shell编程之算术运算命令

(())  用于整数之间常用的运算符,效率高
let :用于整数运算,类似于(())
expr :用于整数运算,但是还有其他功能
bc :Linux下的一个计算程序,适合整数及小数运算
$[] :用于整数运算
awk:awk既可以整数运算,也可以小数运算
declare: 定义变量值和属性,-i参数可以用于定义整形变量,做运算

示例:

[root@shell-yankerp sh]# echo $((1+1)) #计算1+1后输出 
2  #那么结果就是等于2
[root@shell-yankerp sh]# echo $((6-3)) #计算6-3等于多少
3  #结果为3
[root@shell-yankerp sh]# b=$((1+2**3-4%3)) #在这里b是一个变量 将变量名的计算结果赋值给b 
[root@shell-yankerp sh]# echo $b     #输出如下: 
8 
[root@shell-yankerp sh]# a=8    #首先a变量名 = 变量值 等于8 那么a就是8 
[root@shell-yankerp sh]# echo $((a=a+2)) #原来a=8 那么现在a+2 结果为10 
10 
[root@shell-yankerp sh]# echo $((a+=1))  #当结果为10 这一行代表 a=a+1那么就等于11 
11 
[root@shell-yankerp sh]# echo $((a**2))  #目前a=11 那么a**2 a的二次方 那么等于11x11=121 输出如下: 
121 

重定向与管道符

交互式硬件设备

标准输入:从该设备接收用户输入的数据
标准输出:通过该设备向用户输出数据
标准错误:通过该设备报告执行出错信息

类型设备文件文件描述编号默认设备
标准输入/dev/stdin0键盘
标准输出/dev/stdout1显示器
标准错误输出/dev/stderr2显示器

重定向

类型操作符用途
重定向输入<讲文本输入来源由键盘改为指定的文件
重定向输出>将命令行的正常执行输出保存到文件,而不是直接显示在屏幕上
重定向输出>>与>类似,但操作是追加而不是覆盖
重定向错误2>将命令行的执行出错信息保存到文件,而不是直接显示在屏幕上
重定向错误2>>与2》类似,但操作是追加而不是覆盖
混合重定向&>相当于>和2>, 即错误与正确的信息都收集,覆盖到同一个文件

整数变量运算

1、expr 变量名 运算符 变量名 
2、echo $[ 变量运算符变量 ]     也可以是 :echo $(( 变量运算符变量 ))

定义变量

定义变量时,变量名不加美元符号($),如:

variableName=“value”

注意,变量名和等号之间不能有空格,这可能和你熟悉的所有编程语言都不一样。同时,变量名的命名须遵循如下规则:

首个字符必须为字母(a-z,A-Z)。

中间不能有空格,可以使用下划线(_)。

不能使用标点符号。

不能使用bash里的关键字(可用help命令查看保留关键字)。

环境变量

env :查看系统中所有的环境变量
vim /etc/profile :编辑环境变量,可以永久性添加环境变量
[root@localhost ~]# export aa=10         //临时将自定义变量加入环境变量中
[root@localhost ~]# env | grep aa
aa=10
[root@localhost ~]# export PATH=$PATH:/root      //临时将/root目录加入环境变量中

用vim /etc/profile进入

位置变量

#!/bin/bash
echo $0            //$0表示当前执行的脚本
echo $1            //$1表示第一个参数
echo $2            //$2表示第二个参数
echo $n            //表示第n个参数
[root@localhost ~]# chmod +x wz.sh   //给予文件可执行权限
[root@localhost ~]# ./wz.sh a b      //脚本有位置变量,在执行脚本时需要根据位置变量添加参数
./wz.sh
a
b
[root@localhost ~]# vim user.sh
#!/bin/bash
#创建用户
useradd $1
echo "$2" | passwd --stdin $1
[root@localhost ~]# chmod +x user.sh 
[root@localhost ~]# ./user.sh wangwu 123
更改用户 wangwu 的密码 。
passwd:所有的身份验证令牌已经成功更新。

预定义变量

$# :表示命令行中位置参数的个数
$* :表示所有位置参数的内容,这些内容为一个整体
$? :表示前一条命令执行后的结果,如果是0表示执行成功,如果是非0数,表示执行失败
$$ :表示当前进程的进程号
$! :表示最后一个后台进程的进程号
$@ :表示所有位置参数内容,这些内容不为一个整体

实验

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值