车机开发之必要了解的shell脚本

车机开发之必要了解的shell脚本

  • 前言
  • shell 命令
      • if 的基本语法:
      • 字符串的判断
      • 数值的判断
      • 拷贝文件
        • 复制文件到文件中
        • 复制单个文件到目录中
        • 复制单个目录到目录中

前言

前端时间做了个需求,涉及到了shell脚本的编写和修改;把其中用到的命令记录下来以备不时之需。
这个脚本主要是放在system/bin/目录下,启动的时候去执行;因为涉及到selinux权限问题,所以怎么才能不重启去执行脚本来验证呢;又记录一个点:

adb shell stop
adb shell start

这样就可以了。

shell 命令

接下来说一下涉及到的shell 命令:

if 的基本语法:

if [ command ];then
   符合该条件执行的语句
elif [ command ];then
   符合该条件执行的语句
else
   符合该条件执行的语句
fi

字符串的判断

字符串批较时,变量一定要用 双引号

[ -z "str" ] 如果str的长度为零,则为真 ,即判断是否为空,空即是真;
[ -n "str" ] 如果str的长度非零,则为真 ,即判断是否为非空,非空即是真;
[ "str1" = "str2" ] 如果两个字符串相同,则为真;
[ "str1" != "str2" ] 如果字符串不相同,则为真;
[ "str1" ]  如果字符串不为空,则为真,与-n类似。

举个栗子:

if [ -z "$solution" ]; then
    echo "head 请指定 solution 的值" 1>&2    
fi

if [ "$opt" != "-" ]&&[ "$opt" != "+" ]; then
	echo "optioin只能取值-或+" 1>&2
	exit 1;
fi

数值的判断

[ num1 -eq num2 ]      num1 和 num2 两数相等为真 , =
[ num1 -ne num2 ]      num1 和 num2 两数不等为真 ,!=
[ num1 -gt num2 ]      num1 大于 num1 为真 , >
[ num1 -ge num2 ]      num1 大于等于num2 为真, >=
[ num1 -lt num2 ]      num1 小于n um2 为真 , <
[ num1 -le num2 ]      num1 小于等于 num2 为真, <=

栗子:

if [ ${num1} -gt ${num2} ]; then  
	echo "[相对目录]的长度应该小于[文件路径]的长度"
	exit 1
fi

拷贝文件

复制文件到文件中
cp file1.* file2.*

file1.*、file2.*表示某一文件;

在当前目录下,将file1.*的文件内容复制到file2.*文件中,如果第二个文件不存在,则先创建文件,然后再拷贝内容。如果存在则直接覆盖,没有警告;

加-i选项,在覆盖前会询问,其余的操作方式也同理;

加-f选项,在复制时强制复制,其余的操作方式也同理;

cp -f file1.* file2.*
复制单个文件到目录中
cp file.* dirName

file.*表示某一文件,dirName表示某一目录,该目录为非空目录或者空目录都可以,但该目录必须存在;

在当前目录下,将file.*文件复制到dirName目录中;

复制单个目录到目录中
cp -r dirName1 dirName2

dirName1、dirName2表示某一目录;

在当前目录下,将dirName1复制到dirName2中,如果dirName2存在,则直接将dirName1拷贝到dirName2目录下;如果dirName2不存在,则将先创建,在将dirName1的内容拷贝到dirName2下;

注意:-r不可省略;

你可能感兴趣的:(车机,android,shell)