1、脚本文件内容的第一行必须要有下面的内容
#!/bin/bash
其作用是表明脚本是在什么shell下面运行的,如上是在bash中运行
2、变量无需定义,但需要注意写法
build_dir = "download"
这样写的话将会出现以下报错
build_dir: 未找到命令
正确写法应是(不留空格)
build_dir="download"
3、变量值的引用(变量名前加$)
build_dir="download"
echo build_dir //输出变量名 build_dir
echo $build_dir //输出变量的值 download
4、判断目录是否存在与创建
build_dir="download" //定义目录名称
if [ ! -d "$build_dir" ]; //-d判断目录是否不存在
then //不存在则
sudo mkdir $build_dir //创建名为download的目录
fi //if语句结束标志
5、判断目录是否存在与递归创建
build_dir="download/build/make" //定义目录名称
if [ ! -d "$build_dir" ]; //-d判断目录是否不存在
then //不存在则
sudo mkdir -vp $build_dir //递归创建名为download/build/make的所有目录
fi //if语句结束标志
download/build/make嵌套了三层目录,判断目录是否存在时会有几种情况:
①download目录不存在;
②download目录存在,build目录不存在;
③download/build目录都存在,make目录不存在;
④download/build/make都存在;
而情况①②③均判断为目录不存在,进而递归创建不存在的目录。
6、输出字符串字体颜色的设置
echo -e "\033[31m Hello Word! \033[0m"
必须使用到echo命令,且调用-e参数,一头“\033[31m”,一尾“\033[0m”,参数控制输出字体的颜色。
7、判断脚本运行时传参个数
if [ $# -ne 2 ]; //参数个数不等于2
then
exit 1
fi
8、字符串的整段输出
cat << EOM //开始标志
##################################
Module
##################################
You can download a Tool,a Bin or a Lib:
1.Download Tool
2.Download Bin
3.Download Lib
EOM //结束标志
9、读取输入参数值
read reply //读取回来的值赋给reply
case $reply in
'q'|'Q') //reply的值为'q'/'Q',终止脚本运行
exit 0;;
1) //reply的值为 1
echo -e "\033[32m Existing All Tool Files \033[0m"
break;;
2) //reply的值为 2
echo -e "\033[32m Existing All Bin Files \033[0m"
break;;
3) //reply的值为 3
echo -e "\033[32m Existing All Lib Files \033[0m"
break;;
esac //case语句结束标志
10、循环语句的使用
while true;do //循环语句的开始标志
//循环体
done //循环语句结束标志
11、判断传参是否存在
if [ -z "$1" ]; //-z判断第一个参数是否存在
then //不存在
path="tool" //固定变量值
else //存在
path=$1 //变量值为输入参数的值
fi //if语句结束标志
12、将目录下的文件名称以列形式列举出来
ls /home/jiajia|sort //格式ls 目录路径|sort
通常用于for循环,遍历所有目录文件
i=1 //初始化变量为1
for board in `ls $dir_path/$path|sort`;do //for循环开始,遍历目录下所有目录文件
name=`cat $dir_path/$path/$board/name` //遍历到目录下name文本的内容赋给变量name
echo -e "\t$i $name" //在每一个name前插入序号(行号)
let i++ //序号++
done
如上,board的值是相当于图片中/home/ysw/download路径下的目录文件名,分别是asd1、boot、libev、rootfs、SDL(每个目录下都有一个name文本),for循环的第一次board的值为asd1,第二次board的值为boot,如此类推,每一次循环都会输出name文本的内容。
13、通过行号返回对应行的目录文件名称
downfile=`ls $dir_path/$path | sed -n "${num}p"`
num的值即是行号,返回来的目录文件名称赋给downfile。