Android需要掌握的shell脚本基础

linux中sh是链接到bash上的,所以sh与bash在功能上是没有区别的,相当于bash解析器是sh的增强版本,所以安卓开发者可以在 git bash中 测试脚本

1,shell脚本运行与输出指令

$ cat test.sh
echo 测试     【输出】

$ /bin/bash test.sh  【调用解释器 bash】
测试

$ sh test.sh   【调用解释器 sh】
测试

echo $? 监测上一个命令成功情况 0 成功
df -h 【查看磁盘情况】

输出结果如下:

Android需要掌握的shell脚本基础_第1张图片

2,变量的定义

a=10 #定义一个变量  注意: a =10 a = 10 都是错误的写法
echo a==$a

输出结果如下:

#  $0 Shell本身的文件名 
#  $1~$n 添加到Shell的各参数值。$1是第1参数、$2是第2参数…
echo 当前Shell脚本的名称是: $0
echo 参数一:$1
echo 参数二:$2

输出结果如下:

3,if条件判断

#  if 条件语句  $? 判断上一个指令是否成功  fi表示一个if语句的结尾
#  $*所有参数列表  $# 添加到Shell的参数个数
echo "本次执行状态如下:"
if(($?));then
echo "本次执行失败"
else
echo "本次执行成功"
fi
echo "外界传递了参数内容是:this\ is $*"
echo "外界传递了参数的数量: this\ is $#"

输出结果如下:

4,循环

seq: squeue  是一个序列的缩写,主要用来输出序列化的东西

seq常见命令参数

用法:seq [选项]... 尾数
 或:seq [选项]... 首数 尾数
 或:seq [选项]... 首数 增量 尾数
以指定增量从首数开始打印数字到尾数。
 
  -f, --format=格式     使用printf 样式的浮点格式
  -s, --separator=字符串        使用指定字符串分隔数字(默认使用:\n)
  -w, --equal-width    在列前添加0 使得宽度相同【自动补位】
      --help            显示此帮助信息并退出
      --version         显示版本信息并退出
运行结果如下:

Android需要掌握的shell脚本基础_第2张图片

Android需要掌握的shell脚本基础_第3张图片

循环代码:

# for 变量名 in 取值列表
# do
#    命令
# done  循环结束
for i in `seq 1 20`
do
echo "遍历的数字是:$i"
done

Android需要掌握的shell脚本基础_第4张图片

# shell expr 是一个功能强大,并且比较复杂的命令,它除了可以实现整数计算,还可以结合一些选项对字符串# 进行处理,例如计算字符串长度、字符串比较、字符串匹配、字符串提取等
a=0
for((f=0;f<=100;f++))
do
# 注意:加的时候,必须加空格,否则有问题
a=`expr $f + $a`
done
echo "最后累加1~100的值是:$a"

输出结果如下:

5,压缩

# tar czf all.taz *.sh 【把所有的 sh文件,压缩成包 all.taz】

# 查找当前目录下,所有的.sh文件,进行打包操作
a=0
for i in `find . -name "*.sh"`
do
a=`expr $a + 1`
tar -czf shellTest+$a.tgz $i
done

6,while循环

i=0
while((i<10))
do
i=`expr $i + 1`
echo "遍历的值:$i"
done

输出结果:

Android需要掌握的shell脚本基础_第5张图片

7,算术运算符

# 函数的学习
function test01() {
echo "我是一个函数"
}
test01 # 调用此函数
# -----
# 函数里面是可以定义变量的,不要去考虑,堆 栈 弹栈,他就是脚本
function test02() {
var1="test1"
var2="test2"
echo $var1
echo $var2
echo "我是一个函数"
}
# 函数传递参数 重点
function test03() {
echo "我是一个函数,参数是:`expr $1`"
}
test03 99999 # 内置传递参数

输出结果如下:

Android需要掌握的shell脚本基础_第6张图片

你可能感兴趣的:(android)