shell脚本
一.shell脚本介绍
shell脚本是一种为 shell 编写的脚本程序,在linux软件开发中占着举足轻重的地位,主要应用与项目工程的编译脚本,在linux操作系统中,也可在其中编写命令的集合后直接执行,大大简化了代码实现的复杂度。
二.shell脚本的语法
这里简单介绍下常用的一些语法操作,对于实际开发中应该可以读懂shell了,如果想系统学习shell编程,请直接去网上查找详细教程。
1.打印
echo “字符串” //可在终端答应字符串(属于linux命令,比较重要,在此说一下)
2.变量
变量命名规则
命名只能使用英文字母,数字和下划线,首个字符不能以数字开头。
中间不能有空格,可以使用下划线(_)。
不能使用标点符号。
不能使用bash里的关键字(可用help命令查看保留关键字)
定义一个变量:直接定义/引用变量:加$
例如:定义:a,P,name … 引用:$a,$P,$name …
3.注释
这里介绍shell注释同c中做个比较
c | shell |
---|---|
单行注释:// | 单行注释:# |
多行注释:/* 内容 */ | 多行注释::<<EOF 内容 EOF |
4.条件语句
@格式:
if [ 条件 ];then
条件满足
else
条件不满足
fi
@数值:
参数 | 说明 |
---|---|
-eq | 等于则为真 |
-ne | 不等于则为真 |
-gt | 大于则为真 |
-ge | 大于等于则为真 |
-lt | 小于则为真 |
-le | 小于等于则为真 |
@字符串
参数 | 说明 |
---|---|
= | 等于则为真 |
!= | 不相等则为真 |
-z 字符串 | 字符串的长度为零则为真 |
-n 字符串 | 字符串的长度不为零则为真 |
@文件
参数 | 说明 |
---|---|
-e 文件名 | 如果文件存在则为真 |
-r 文件名 | 如果文件存在且可读则为真 |
-w 文件名 | 如果文件存在且可写则为真 |
-x 文件名 | 如果文件存在且可执行则为真 |
-s 文件名 | 如果文件存在且至少有一个字符则为真 |
-d 文件名 | 如果文件存在且为目录则为真 |
-f 文件名 | 如果文件存在且为普通文件则为真 |
-c 文件名 | 如果文件存在且为字符型特殊文件则为真 |
-b 文件名 | 如果文件存在且为块特殊文件则为真 |
例如:
其他语句这里就不作介绍,如果需要,自行学习。
5.编译脚本的重要知识点–shell传参(常用)
参数处理 | 说明 |
---|---|
$# | 传递到脚本的参数个数 |
$* | 以一个单字符串显示所有向脚本传递的参数。如"$*“用「”」括起来的情况、以"$1 $2 … $n"的形式输出所有参数。 |
$$ | 脚本运行的当前进程ID号 |
$! | 后台运行的最后一个进程的ID号 |
$? | 显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误。 |
例如:
了解如上语法,就可以编写一些简单的编译脚本了
下面是一个编译脚本的示例build_project.sh
#!/bin/bash
echo "this is project:$1" #打印编译的工程命,shell参数一传入
if [ ! -d "./out/" ];then #编译生成的文件放在out中,编译前判断有无out,有删除
echo "donot have out file!"
else
echo "delete out file!"
rm -rf out
fi
./build.sh 参数 $1 参数 #执行编译脚本,给build.sh传参
if [ "$1"x = "project_name"x ];then #编译完成,此工程需要拷贝部分文件到生成目录(一键下载需要的文件)
echo "cp install fill to out"
cp project/../* ./out/... #copy 文件
fi
如需执行脚本,需要给脚本增加可执行权限
chmod +x build_project.sh
./build_project.sh project_name 即可。
本人接触脚本时间也不长,在此略做总结,如有错误的的地方欢迎指出
作者:cdb雪地里