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 【查看磁盘情况】
输出结果如下:
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 显示版本信息并退出
运行结果如下:
循环代码:
# for 变量名 in 取值列表
# do
# 命令
# done 循环结束
for i in `seq 1 20`
do
echo "遍历的数字是:$i"
done
# 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
输出结果:
7,算术运算符
# 函数的学习
function test01() {
echo "我是一个函数"
}
test01 # 调用此函数
# -----
# 函数里面是可以定义变量的,不要去考虑,堆 栈 弹栈,他就是脚本
function test02() {
var1="test1"
var2="test2"
echo $var1
echo $var2
echo "我是一个函数"
}
# 函数传递参数 重点
function test03() {
echo "我是一个函数,参数是:`expr $1`"
}
test03 99999 # 内置传递参数
输出结果如下: