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/stdin | 0 | 键盘 |
标准输出 | /dev/stdout | 1 | 显示器 |
标准错误输出 | /dev/stderr | 2 | 显示器 |
重定向
类型 | 操作符 | 用途 |
---|---|---|
重定向输入 | < | 讲文本输入来源由键盘改为指定的文件 |
重定向输出 | > | 将命令行的正常执行输出保存到文件,而不是直接显示在屏幕上 |
重定向输出 | >> | 与>类似,但操作是追加而不是覆盖 |
重定向错误 | 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数,表示执行失败
$$ :表示当前进程的进程号
$! :表示最后一个后台进程的进程号
$@ :表示所有位置参数内容,这些内容不为一个整体