Kre*_*tor 4 linux scripting shell-script android
我试图找到 Linux 脚本和 Android 脚本之间的差异。但我找不到语法上的任何具体差异。例如,Android 脚本可以做而 Linux 脚本不能做的事情、执行、性能等。
你能建议一些具体的寻找吗?
ale*_*cxs 11
Androidmksh
默认运行 MirBSD Korn shell ,它主要是 sh 的超集。与 bash 脚本相比,这有一些限制,例如不能使用数组。
此外,核心实用程序是 android 特定的工具箱或玩具箱小程序,用法通常略有不同,有时会受到限制(例如tar
)
定制的 android 设备使用busybox作为缺少核心工具的扩展,这些小程序也依赖于构建。
Android 权限使用SELinux扩展,这在文件操作方面需要不同的脚本编写方式,例如不能sed
像往常一样使用,因为文件将丢失其上下文。
应该始终针对尽可能多的 shell(mksh、ash)测试脚本并保持核心工具的使用简单(例如,代码应该与 BSD grep、toybox grep 和 busybox grep 一起使用)
避免交互式脚本,因为设备没有真正的键盘,而且在命令行确认方面,微型触摸屏很麻烦。
处理路径在 android 设备上也略有不同,例如 shebang 是#!/system/bin/sh
当/data/local/tmp
目录在用户空间(而不是在 RAM 中)持久时
值得一提的是adb shell,默认情况下它比任何其他终端模拟器拥有更多的权限。应该清楚地提供使用 adb 命令在主机上运行的脚本,没有经验的用户可能会将它们与客户端上运行的 shell 脚本混淆。
当涉及在恢复模式下运行的脚本时,有一种相关的脚本语言EDIFY和它的对应shell 脚本替换。恢复模式 ( ash
) 中的 shell与 android 启动模式 ( mksh
) 不同,其行为取决于恢复构建。应该捆绑 busybox 和所有必要的二进制文件,以避免丢失小程序(例如awk
)
脚本语言本身没有什么不同,也没有特定的语法。将 bash 脚本移植到 android 是绝对可能的,不需要特殊知识。只是环境不同,所以脚本应该在目标平台上测试
也就是说,脚本编写愉快:)
Android 或 Linux 没有单一的 shell,并且多年来一些默认值已经发生了变化,因此您可能在不同的设备以及 Linux/Unix 和 Android 发行版(例如 Lineage OS、Debian、AIX)中拥有不同的默认 shell。
其中许多系统都包含多个 shell,这意味着您可以通过更改 shebang 来运行脚本ash
,或者使用诸如 之类的东西登录它们,因此,最终,比较是在不同的 shell 之间进行的bash
。ksh
adb shell -t bash -i
这就是为什么很难列出基于Android
或的语法差异或其他问题Linux
。
归档时间: |
|
查看次数: |
941 次 |
最近记录: |