简述
Shell语法在编译Android底层库时,经常会用到,是用户使用 Linux
的桥梁。
在Android开发中使用shell能够 :
- 对于底层开发有着更多的解决途径
- 能独立编译任意的第三方库,并将它打包到APK中
- 覆盖大多数工作APK编译脚本
使用shell需要我们提前准备好一台linux的服务器,连接linux服务器可以使用:winSCP+putty
的方式(其它自行百度);
备注:新手执行shell命令时可能会遇到的问题:
①执行ls
没反应--原因:可能是因为该目录下没有文件。
②执行./demo.sh
(文件名为demo)时候提示:Permission denied
(没有权限),可以执行chmod 777 demo.sh
给最高权限,也可以将文件开头写成#!/bin/sh 通过sh 文件名
执行,这样不需要给每个文件都指定权限
下面简单介绍基本使用 :
shell中#号表示注释().sh文件的第一行除外)
执行echo $BASH
输出/bin/bash
,确认是shell的bash环境
执行vim demo.sh
创建一个shell可执行文件,第一行固定写
#!/bin/bash
注:键盘的insert键编辑文件,保存退出点esc退出输入状态后 输入 :wq 回车(和git的保存退出一样)
#!/bin/bash
#第一行固定写法,后面#号表示注释,shell的输出用echo,下面表示输出test
echo "test"
然后通过执行./demo.sh
执行文件:
控制台输出test
如控制台提示Permission denied
看上述备注②
局部变量变量
shell是典型的弱类型语言,示例:
#!/bin/bash
# 声明变量A=10,等号左右两边不能有空格!!!!!!
A=10
#$引用变量
echo $A
执行./demo.sh
,控制台输出10
环境变量
类比Java中的环境变量
内置环境变量例如: PWD表示当前目录
#!/bin/bash
#输出当前路径
echo $PWD
执行输出/root
表示当前在/root
文件夹
内置的环境变量可以直接在命令行调用,命令行输入pwd
一样输出/root
系统环境变量有以下参数:
举个栗子:
我们将
demo.sh
修改如下:
#!/bin/bash
#$0表示当前程序名称
echo $0
#$1传入的第一个参数
echo $1
#$2传入的第二个参数
echo $2
执行./demo.sh 参数1 参数2
,传递参数一定要加空格,多个参数空格隔开
控制台输出
./demo.sh
参数1
参数2
打印了当前程序名,和入参,$n
如果不传参数,不会有内容输出
看一下剩下的参数含义*,$#,修改demo.sh
如下:
#!/bin/bash
echo $0
echo $1
echo $2
echo "-------------"
echo "\$?表示: $?"
echo "\$*表示: $*"
echo "\$#表示: $#"
执行./demo.sh 参数1 参数2
输出:
./demo.sh
参数1
参数2
-------------
$?表示: 0
$*表示: 参数1 参数2
$#表示: 2
其中: $?
表示上一个命令执行是否成功0表示成功,其它表示失败,很常用~
$*
表示所有参数
$#
表示参数的个数
网友评论