像这样简单的事情肯定有效
#!/bin/bash
touch /sdcard/successful.txt
但它在我实际的 bash 命令中不起作用
#!/bin/bash
PACKAGE='com.mixplorer'
if [ $(pidof $PACKAGE) ]; then
am force-stop com.mixplorer && am start -n com.mixplorer/.activities.BrowseActivity
fi
if [ ! $(pidof $PACKAGE) ]; then
am start -n com.mixplorer/.activities.BrowseActivity
fi
loopcleaner()
{
rm -rf /sdcard/log.txt
}
while [ $(pidof $PACKAGE) ]
do
loopcleaner
sleep 2
if [ ! $(pidof $PACKAGE) ]; then
touch /sdcard/successful.txt
exit 0;
fi
done
解释:
脚本执行后,首先检查包名为“com.mixplorer”的文件管理器是否处于活动状态,如果是,则强制停止并再次打开它。如果不是,则只需打开它即可。
现在文件管理器已经打开,只要文件管理器进程正在运行,就可以在循环中每隔 10 秒不断删除由 Loopcleaner 定义的名为“log.txt”的文件。
上述清理活动应该只在文件管理器进程运行之前起作用,一旦停止,创建一个名为 success.txt 的文件。脚本现在应该立即结束。
因此,在我退出文件管理器后,由于某种原因,successful.text 不会在我的内部存储中创建(如果只执行 touch 命令,则效果很好)
答案1
我通过在触摸命令后添加一个中断来修复它。
while [ $(pidof $PACKAGE) ]
do
loopcleaner
sleep 2
if [ ! $(pidof $PACKAGE) ]; then
touch /sdcard/successful.txt
break
exit 0;
fi
done
(虽然我对 bash 非常陌生,并且对自己是否真的有信心这是最好的方法,所以任何进一步的编辑/改进建议将不胜感激)