个人整理shell脚本编程笔记
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
shell脚本编程学习笔记(一)
一、脚本格式
vim shell.sh
#!/bin/bash//声明脚本解释器,这个‘#’号不是注释,其余是注释
#Program://程序内容说明
#History://时间和作者
二、shell变量的种类
用户自定义变量:由用户自己定义、修改和使用
与定义变量:Bash与定义的特殊变量,不能直接修改
位置变量:通过命令行给程序传递执行的参数
1、定义变量:
变量名要以英文字母或下划线开头,区分大小写。
格式:变量名=值
输出变量:echo $变量名
2、键盘输入为变量内容:
格式:read [-p "信息"] 变量名
如:read -p "pewase input your name:" name
3、不同引号对变量的作用
双引号"":可解析变量,$符号为变量前缀。
单引号'':不解析变量,$为普通字符。
反引号``:将命令执行的结果输出给变量。
三、shell条件测试
1、test命令:
用途:测试特定的表达式是否成立,当条件成立时,命令执行后的返回值为0,否则为其他数字。
格式:test 条件表达式[ 条件表达式] (注意:[]与表达式之间存在空格)
2、常见的测试类型:
测试文件状态
格式:[ 操作符文件或目录]
如:if [ -d /etc ]
then
echo "exists"
else
echo "not exists"
fi
常见的测试操作符:
-d:测试是否为目录
-e:测试目录或文件是否存在
-f:测试是否为文件
-r:测试当前用户是否有读权限
-w:测试当前用户是否有写权限
-x:测试当前用户是否有执行权限
-L:测试是否为符号链接文件
字符串比较
格式:[ 字符串1 = 字符串2 ]
[ 字符串1 != 字符串2 ]
[ -z 字符串]
如:read -p 'name:' name
read -p 'pass:' pass
if [ $name = 'admin' ] && [ $pass = '123']
then
echo '登录成功'
else
echo '登录失败'
if
常用的测试操作符:
=:字符串内容相同。
!=:字符串内容不同。
-z:字符串内容为空。
整数值比较
格式:[ 整数1 操作符整数2 ]
如:age=30
if [ $age -ge 18 ]
then
echo "已成年"
else
echo "未成年"
fi
常用的测试操作符:
-eq:等于
-ne:不等于
-gt:大于
-lt:小于
-le:大于或等于
-ge:小于或等于
逻辑测试
格式:[ 表达式1 ] 操作符[ 表达式2 ]
常用操作符:
-a或&&:逻辑与
-o或||:逻辑或
!:逻辑非
四、流程判断:
1、条件判断
a、if语句
格式:
单分支:
if 条件表达式
then 命令序列
fi
如:age=30
if [ $age -ge 18 ]
then
echo "已成年"
else
echo "未成年"
fi
多分枝:
if 条件表达式
then 命令序列
elif命令序列
fi
如:score=87
if [ $score -lt 60 ];then
echo '60以下'
elif [ $score -gt 60 ] && [ $score -lt 70 ];then
echo '60~70之间'
elif [ $score -ge 70 ] && [ $score -lt 80 ];then
echo '70~80之间'
else
echo '优秀'
fi
b、case
格式:case $变量名称in
"第一个变量内容")
;;
"第二个变量内容")
;;
*)//最后一个变量内容都会用*来代表其它值,不包含前面的变量内容
;;
esac
如:case $1 in
start)
echo 'start MYSQL service.'
;;
stop)
echo 'stop MYSQL service.'
;;
*)
echo "Usage: $0 start|stop"
;;
esac
2、循环控制
跳出本次循环:continue
结束循环:break
a、while循环
格式:while [ 条件表达式]
do
程序段落
done
如:num=3
while [ $num -gt 0 ]
do
echo $num
num=$(($num-1))
done
b、for循环
格式:for var in con1 con2 con3
do
程序段
done
如:
for i in user0 user1 user2 user3
echo $i
done
格式:for ((i=0;i<10 1++))
do
程序段
done
如:for ((i=0;i<10;i++))
do
echo $i
useradd user$i
echo 123 | password --stdin_user$i
done
3、函数使用
定义一个函数:在程序的最前面
function 函数名(){}或者function 函数名{}
如:function printit(){
echo "your choice is $1"
}
调用:直接使用函数名
如:printit 1
传递参数:函数名参数1 参数1