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

文章介绍了在车机开发中使用Shell脚本的一些重要操作,包括if条件语句的基本语法,如何进行字符串和数值的判断,以及不同类型的文件拷贝方法。此外,还提到了如何在不重启设备的情况下执行脚本以解决SELinux权限问题。

前言

前端时间做了个需求,涉及到了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不可省略;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值