我想创建一个 bash 脚本来完成特定任务,尽管我对 bash 不了解。懒洋洋地直接在这里问它并不能很好地解释我的问题,所以我只是一直奋斗了1个小时并尽我所能,这样至少我的代码有一个基本结构(即使可能被破坏,但仍然会更容易)得到我的问题,以便更多的人愿意提供帮助)。
首先让我准确地显示我遇到的错误
$ su
$ sh "/sdcard/tester.sh"
/sdcard/tester.sh[2]: syntax error: 'if' unmatched
代码如下
#!/bin/bash
PACKAGE='com.mixplorer'
if [ $(pidof $PACKAGE) ]; then
am force-stop com.mixplorer
am start -n com.mixplorer/.activities.BrowseActivity
loopcleaner()
{
rm -rf /sdcard/log.txt
}
while [ $(pidof $PACKAGE) ]
do
loopcleaner
sleep 10
if [ ! $(pidof $PACKAGE) ]; then
break
mkdir /sdcard/successful.txt
fi
done
我想要实现的目标的解释:
1)一旦执行脚本,首先检查包名为“com.mixplorer”进程的文件管理器是否已经处于活动状态,如果是,则强制停止并再次打开它,如果不是,则只需打开它
2) 既然文件管理器已经打开,只要文件管理器进程正在运行,就不断地在循环中每隔 10 秒删除由 Loopcleaner 定义的名为“log.txt”的文件
3) 仅当文件管理器进程不再处于活动状态后,结束步骤 2 中的循环清理过程并创建一个名为 success.txt 的文件。创建此文件后,脚本应结束/终止其自己的进程
答案1
fi
在本节末尾添加,如下所示:
if [ $(pidof $PACKAGE) ]; then
am force-stop com.mixplorer
am start -n com.mixplorer/.activities.BrowseActivity
fi