1. 首页 > 电脑手机 >

shell脚本 shell脚本教程

shell脚本

牙叔教程 简单易懂

shell脚本 shell脚本教程shell脚本 shell脚本教程


用autojs执行shell脚本, 脚本所在目录为 /data/local/tmp

做息屏运行脚本, 要用到类似的方法,

比如息屏使用adb去调用dex文件, 来达到息屏效果,

两者相同的地方是

手机: Mi 8

Android版本: 10

Autojs版本: 9.0.10

非常不幸, 没有权限, 复制文件失败,

所以我们需要要提高权限, Shizuku 可以提升我们的权限到adb级别,

Shizuku的使用请查阅上一篇教程, 激活Shizuku

将权限提升为adb级别之后, 我们重新复制文件

首先, 检查有没有adb权限

复制文件

查看文件yashu.sh权限

可以看到权限是-rw-rw----, 没有执行权限, 接下来, 我们就添加执行权限

code=0, 0表示没有发生错误, 没有错误就意味着, 命令正常执行,

再次查看文件yashu.sh权限

可以看到权限是-rwxrwx--x, 有了执行权限, 接下来, 我们就执行这个shell脚本

shell脚本内容

执行shell脚本的命令

息屏运行脚本使用到的命令与执行shell脚本类似, 这也是我写这篇教程的原因,

方便以后复制黏贴

思路是最重要的, 其他的百度, bing, stackoverflow, github, 安卓文档, autojs文档, 最后才是群里问问

--- 牙叔教程

部分内容来自网络

本教程仅用于学习, 禁止用于其他用途

如何运行shell脚本

编写好的shell脚本(如:test),可以采取两种方式进行运行: 一、 $ sh test 一般不采用这种调用方式,尤其不采用“sh

(1)修改文件的权限 chmod 755 文件名(755表示rwxr_xr_x)r表示读权限、w表示写权限、x表示执行权限

(2)./文件名 ./表示执行

Shell脚本

因为-c的意思是command,所以bash -c后面应该跟一个command。

shell运行脚本的两种方法:

1、bash xx.sh

2、bash -c "cmd string"

使用bash -c需要注意两点:

1、bash -c "cmd string"接的是shell命令字符串,用双引号括起来

2、bash -c "/path/to/file"接的是文件绝对路径,用双引号括起来,并且文件需要可执行权限

参考链接:

1.1、 linux shell -c,【bash】关于shell中 bash -c 执行命令或者可执行文件

1.2、 【bash】关于shell中 bash -c 执行命令或者可执行文件

示例:/usr/libexec/PlistBuddy -c "cmd string"

参考链接: XCode添加自定义Run Script Phase

由于PlistBuddy并不在Mac默认的Path里,所以我们得通过绝对路径来引用这个工具:

参考链接: PlistBuddy简单使用

第七章 SHELL脚本

在linux里可以直接使用shell脚本进行管理,shell就是命令解释器,把用户的命令翻译成机器语言,在把机器语言翻译成人类语言返回给用户。

shell有Bshell和Cshell区分,经常在linux里面用的shell都是Bshell,Bshell和Cshell完全不兼容。我在Centos里面看见支持的几种shell解释器有sh,bash,csh。然后用的最多的就是base(标准shell)。

shell脚本可以添加执行权限,然后在base命令界面直接输入脚本路径即可执行;所有的脚本开头要声明脚本shell,常见的声明是#!/bin/bash,其他的还有#!/bin/sh,#!/bin/csh

写第一个shell脚本吧

可以使用alias命令查看系统当前的别名,也可以用alias 别名=‘真实命令’ 来执行;

重定向输出是将输出到标准输出设备的数据重新定向到另一个地方;

将标准(键盘)输入重定向到其他一个设备上;

格式:命令1 | 命令2

表示把命令1的执行结果当成命令2的执行条件

跟正则表达式不一样啊,刚才的grep -P就是使用正则,但是这里通配符比较简单啊。

用引号表示,其中单引号标识不解析字符串中的特殊字符,双引号则解析特殊字符。

如果字符串中有存在$(ls)这种,那么这个表示ls命令的执行结果啊

当然这也可以用\进行转义

shell脚本书写方法

在shell学习过程中,感觉挺有用的一份比较,略整理分享给大家。

首先,shell的作用

用户的登陆shell 登陆后默认的shell程序是: /bin/bash

不同的shell内部指令,运行环境会有所区别

常见的shell有

/bin/sh

/bin/bash

/sbin/nologin

1.编写脚本代码:

使用vi编辑器,每行一条Linux命令,按照顺序执行

2.然后赋予脚本文件可执行的属性

3.执行脚本文件的三种方法

./chao.sh

sh /chao.sh

source /chao.sh

更完善的脚本构成

注释信息

可执行语句

重定向操作

类型 操作符 用途

重定向输入 < 从指定文件读取而不是从键盘输入

重定向输出 > 将输出文件保存到指定文件(覆盖原有内容)

>> 将输出文件保存到指定文件(覆盖原有内容)

标准错误输出 2> 将错误信息保存到指定的文件(覆盖原有内容)

2>> 将错误信息保存到指定的文件

混合输出 &> 将标准输出,标准错误的内容保存到同一文件中

管道操作符号“|”

将左侧的命令输出结果,作为右侧命令的处理对象

shell变量的作用

为灵活管理Linux系统提供的特定参数,有两层意思

变量名:使用固定的名称,由系统预设或用户定义

变量值: 能够根据用户设置,系统环境的变化而变化

变量的类型

自定义变量:由用户自己定义,修改和使用

环境变量: 由系统维护,用于设置工作环境

位置变量: 通过命令行给脚本程序传递参数

预定义变量:BASH中内置的一类变量,不能直接修改

定义一个新的变量

格式: 变量名=变量值

变量名以字母或下划线开头,区分大小写,建议全大写

查看变量的值: echo $变量名

赋值时使用引号:

双引号:允许使用$符引用其他变量值

单引号: 禁止引用其他变量值,$视为普通字符

反撇号:命令替换,提取命令执行后的输出结果

将键盘输入内容为变量赋值

格式: read [-p "提示信息"] 变量名

设置变量的作用范围

export 变量名

export 变量名=变量值

两种格式可以混合使用

整数变量的运算:

expr 变量1 运算符 变量2 [运算符 变量3]

常见的运算符

加法运算符 +

减法运算符: -

乘法运算符:\*

除法运算符: /

取余运算:%

整数变量的运算(2)

((变量=变量运算符变量));

等号后面的变量可以是具体数值

例子:

((a=a+3));

环境变量:

由系统提前创建,用来设置用户的工作环境

配置文件: /etc/profile ~/.bash_profile

常见环境变量的举例

位置变量:

表示为$n, n为1~9之间的数字

预定义变量:

/etc/passwd /etc/shadow

例如一些服务的内置用户名或密码

如apache的启动用户就是预定义变量

条件测试操作

测试特定的 表达式是否成立,当条件成立时,测试语句的返回值为0,否则为其他数值

格式 : test 条件表达式

应用实例:

test -z 进行测试的时候 字符串长度为0的时候 结果才返回1

如果变量数值为0 返回0

条件测试操作

[ 操作符 文件或目录]

[5] 部分是判断表达式,-d表示判断是否是目录

&&是”逻辑与“操作符,只有&&前面的判断成立,后面的语句才会执行

-b的意思是判断 后面的路径是否是一个目录

echo $? 表示对刚刚执行的表达式进行判断

0表示成立,1表示不成立

-e filename 如果 filename存在,则为真 [ -e /var/log/syslog ]

-d filename 如果 filename为目录,则为真 [ -d /tmp/mydir ]

-f filename 如果 filename为常规文件,则为真 [ -f /usr/bin/grep ]

-L filename 如果 filename为符号链接,则为真 [ -L /usr/bin/grep ]

-r filename 如果 filename可读,则为真 [ -r /var/log/syslog ]

-w filename 如果 filename可写,则为真 [ -w /var/mytmp.txt ]

-x filename 如果 filename可执行,则为真 [ -L /usr/bin/grep ]

filename1-nt filename2 如果 filename1比 filename2新,则为真 [ /tmp/install/etc/services -nt /etc/services ]

filename1-ot filename2 如果 filename1比 filename2旧,则为真 [ /boot/bzImage -ot arch/i386/boot/bzImage ]

字符串比较运算符 (请注意引号的使用,这是防止空格扰乱代码的好方法)

-z string 如果 string长度为零,则为真 [ -z "$myvar" ]

-n string 如果 string长度非零,则为真 [ -n "$myvar" ]

string1= string2 如果 string1与 string2相同,则为真 [ "$myvar" = "one two three" ]

string1!= string2 如果 string1与 string2不同,则为真 [ "$myvar" != "one two three" ]

算术比较运算符

num1-eq num2 等于 [ 3 -eq $mynum ]

num1-ne num2 不等于 [ 3 -ne $mynum ]

num1-lt num2 小于 [ 3 -lt $mynum ]

num1-le num2 小于或等于 [ 3 -le $mynum ]

num1-gt num2 大于 [ 3 -gt $mynum ]

num1-ge num2 大于或等于 [ 3 -ge $mynum ]

整数值比较

格式: [ 整数1 操作符 整数2 ]

字符串比较

格式1: [ 字符串1 = 字符串2 ]

[ 字符串1 != 字符串2 ]

格式2: [ -z 字符串 ]

逻辑测试:

格式1: [ 表达式1 ] 操作符 [ 表达式2 ]

格式2: 命令1 操作符 命令2

if语句的结构

while语句的语法结构

什么是shell脚本

操作系统与外部最主要的接口就叫做shell。shell是操作系统最外面的一层。shell管理你与操作系统之间的交互:等待你输入,向操作系统解

释你的输入,并且处理各种各样的操作系统的输出结果。shell提供了你与操作系统之间通讯的方式。这种通讯可以以交互方式(从键盘输

入,并且可以立即得到响应),或者以shellscript(非交互)方式执行。shellscript是放在文件中的一串shell和操作系统命令,它们可以被

重复使用。本质上,shellscript是命令行命令简单的组合到一个文件里面。Shell基本上是一个命令解释器,类似于DOS下的。它接收用户命令(如ls等),然后调用相应的应用程序。较为通用的shell有标准的Bourneshell(sh)和Cshell(csh)。

交互式shell和非交互式shell交互式模式就是shell等待你的输入,并且执行你提交的命令。这种模式被称作交互式是因为shell与用户进行交

互。这种模式也是大多数用户非常熟悉的:登录、执行一些命令、签退。当你签退后,shell也终止了。shell也可以运行在另外一种模式:非

交互式模式。在这种模式下,shell不与你进行交互,而是读取存放在文件中的命令,并且执行它们。当它读到文件的结尾,shell也就终止了。

shell的类型在UNIX中主要有两大类shellBourneshell(包括sh,ksh,andbash)Bourneshell(sh)Kornshell(ksh)BourneAgain

shell(bash)POSIXshell(sh)Cshell(包括cshandtcsh)Cshell(csh)TENEX/TOPSCshell(tcsh).

附:LINUX系统的shell原理

Linux系统的shell作为操作系统的外壳,为用户提供使用操作系统的接口。它是命令语言、命令解释程序及程序设计语言的统称。

shell是用户和Linux内核之间的接口程序,如果把Linux内核想象成一个球体的中心,shell就是围绕内核的外层。当从shell或其他程序向

Linux传递命令时,内核会做出相应的反应。shell是一个命令语言解释器,它拥有自己内建的shell命令集,shell也能被系统中其他应用

程序所调用。用户在提示符下输入的命令都由shell先解释然后传给Linux核心。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至836084111@qq.com 举报,一经查实,本站将立刻删除。

联系我们

工作日:9:30-18:30,节假日休息