linux中默认的shell有一下几种:
1.bash(发行版默认)
2.csh
3.ksh
4.tcsh
shell是一种解释性的脚本语言
脚本语言还有 python(比较流行) perl php等等
1.变量
bash变量的类型:
1.环境变量:作用域为当前shell进程及其子进程
2.本地变量(局部变量)
3.位置变量
4.特殊变量
首先介绍一下环境变量:
添加环境变量 export VARNAME=VALUE
脚本执行时,会启动一个子shell进程,命令行中启动的脚本会继承当前shell环境变量;
系统自动启动执行的脚本(非命令行启动)就需要自己定义需要的环境变量.
本地变量或者称作局部变量
声明方式: VARNAME=VALUE 作用域为整个bash
local VARNAME=VALUE 作用域为当前的代码段
位置变量
$1:表示引用命令行的参数列表中的第一个参数
$2:表示引用命令行参数列表中的第二个参数
...以此类推
...等等
shift /shift n: shfit表示删除参数列表中的第一个,后面每一个都向前移动, shitf n表示删除前n个, 后面的向前移动
特殊变量
$?:上一个命令执行状态的返回值
$? 若为0,表示前一条命令正确返回,1-255,表示错误执行(1,2,127系统预留,最好不使用)
$#:命令行参数列表的个数
$*:命令行传递的参数列表
$@:命令行传递的参数列表
变量的引用 ${VARNAME} ,一般花括号可以省略(若不会引起变量名歧义)
''单引号表示强引用,引号中的变量不替换
""双引号为弱引用,引号中的变量会替换
所以做变量替换时注意使用双引号
撤销变量
unset VARNAME
查看变量
set
查看环境变量
env
printenv
export
变量名:只能包含字母数字下划线,并且不能以数字开头,不应该跟系统中已有的变量重名,最 好做到见名知意。
2.bash中如何实现条件判断
条件测试类型:整数测试,字符测试,文件测试
一、整数测试
表达式:
[ expression ]
` expression `
test expression
注意:中括号和expression必须用空格分开
命令有:
-eq:相等
-ne:不相等
-gt:大于
-lt:小于
-ge:大于等于
-le:小于等于
二、字符测试
表达式
[ expression ]
` expression `
关键字有
==:等于
!=:不等于
>/>=:大于/大于等于
</<=:小于/小于等于
-n string : 测试字符串是否为空
-s string :测试字符串是否不为空
三、文件测试
-e filename:测试文件是否存在
-f filename:测试文件是否为普通文件
-d filename:测试是否为目录
-r filename:测试当前用户是否有读权限
-w filename:测试当前用户是否有写权限
-x filename:测试当前用户是否有执行权限
3、bash中进行算术运算和逻辑运算
一、算术运算
Ⅰ、let算术运算
let C=$A+$B
Ⅱ、$[]
C=$[$A+$B]
Ⅲ、$(())
C=$(($A+$B))
Ⅳ、expr命令
C=`expr $A +$B`
Ⅴ、bc
echo “scale=2;100/28”| bc
或者bc<<<"scale=2;100/38"
二、逻辑运算 && || !
在linux中0表示真,非0表示假
&&:若前一个条件不成立,不判断后一个条件
||:若前一个条件成立,不判断后一个条件
4.杂项
exit n:退出脚本,并给定返回值
if 判断条件; then
statement1
statement2
fi
if 判断条件;then
statement1
elif 判断条件;thenstatement2
else
statement3
fi
for 变量 in 列表;do
循环体
done
shebang 魔数
#!/bin/bash
#