目录
1.shell中的变量分类
局部变量:脚本中所使用到的变量
环境变量:环境配置过程中所使用到的变量
shell变量:变量名是由字母数字下划线组成,由字母或下划线开头,shell变量在使用时需要在变量前添加一个$符号
预定义变量:
$0:当前脚本的名称
$1-$9:9个位置变量
$?:上一条命令的返回值
$*:所有的位置变量,每一个位置变量都是一个字符串
$#:位置变量的个数
$@:所有动位置变量,所有的位置变量组成一个字符串
$$:当前进程的进程号
$!:后台运行的最后一个进程的进程号
2.shell的数据类型
shell的默认数据类型是字符串。默认数字、运算符、变量都做字符串处理。在shel中单引号不会解析变量,双引号会解析变量。
3.bcj计算器
bc是任意精度的计算器语言,在linux当作计算器使用,但是bc只能做基本的数学运算(+ - * / ^ % sqrt)
bc的常用参数:
i:强制进入交互模式
l:定义使用的标准数学库
v:显示版本信息
4.整数数值的运算
第一种表达式:$(( 表达式 ))
第二种表达式:$[ 表达式 ]
第三种表达式:expr 表达式
5.字符串的截取
echo "截取前4个字符:"
echo ${line:0:4}
echo "截取后9个字符:"
echo ${line:0-9}
echo "从倒数第九个字符开始截取4个字符"
echo ${line:0-9:4}
echo "从左向右截取最后一个:后的字符"
echo ${line##*:}
echo "从左向右截取第一个:后的字符"
echo ${line#*:}
echo "从右向左截取最后一个:后的字符"
echo ${line%%:*}
echo "从右向左截取第一个:后的字符"
echo ${line%:*}
echo "字符串长度"
echo ${#line}
6.数组
定义;使用圆括号,中间以空格作为分隔符
7.for循环
语法一:
for 变量 in 值1 值2
do
循环执行语句
done
语法二:
#for (( i=0;i<3;i++))
for (( 初始化变量;结束循环条件;运算))
do
循环执行语句
done
第一种语法格式:
第二种语法格式:
8.while循环
while read line
do
循环执行语句
done
while 条件
do
循环执行语句
done
支持break和continue
第一种语法格式:
第二种语法格式:
9.if-else语句
if 条件
then
执行语句
fi
if 条件
then
执行语句
else
执行语句
fi
if 条件
then
执行语句
elif 条件
执行语句
fi
10.条件测试[ ]
[ ]:表示条件测试。注意这里的空格很重要。要注意在‘['后面和']'前面都必须要加上空格。
常用判断:
[ -d filename ]:如果filename(最好是绝对路径)存在且是一个directory(目录)则返回真,否则返回假。
[ -f filename ]:如果filename存在且是一个文件,则返回真,否则返回假。
字符串判断:
[ -z string ]:如果string长度为0返回真,否则返回假。
[ -n string ]:如果string长度非0返回真,否则返回假。
[ string ]:如果字符串非空返回真。
[ string1 == string2 ]:如果两个字符串相同则返回真。
[ string1 != string2 ]:如果两个字符串不相同返回真。
[ string1 > string2 ]:如果string1字典排序在string2后面返回真。
数值判断:
[ int1 -eq int2 ]:如果int1等于int2,返回真。
[ int1 -ne int2 ]:如果int1不等于int2,返回真。
[ int1 -gt int2 ]:如果int1大于int2,返回真。
[ int1 -ge int2 ]:如果int1大于等于int2,返回真。
[ int1 -lt int2 ]:如果int1小于int2,返回真。
[ int1 -le int2 ]:如果int1小于等于int2,返回真。
逻辑判断:
[ ! expr ]:逻辑非,如果expr是false则表达式返回值为真。
[ expr1 -a expr2 ]:逻辑与,如果expr1和expr2都为真,则表达式返回值为真。
[ expr1 -o expr2 ]:逻辑或,如果expr1或expr2有一个为真,表达式的返回值为真。
(( ))、[ ]、[[ ]] 的区别:
(( )):整数数值的判断。
[ ]:字符串判断的过程中如果由空白字符会进行分词。
[[ ]]:不会进行分词 建议使用[[ ]] 进行字符串的判断。