由于某种原因,触摸命令在 bash 中不起作用

由于某种原因,触摸命令在 bash 中不起作用

像这样简单的事情肯定有效

#!/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

解释:

  1. 脚本执行后,首先检查包名为“com.mixplorer”的文件管理器是否处于活动状态,如果是,则强制停止并再次打开它。如果不是,则只需打开它即可。

  2. 现在文件管理器已经打开,只要文件管理器进程正在运行,就可以在循环中每隔 10 秒不断删除由 Loopcleaner 定义的名为“log.txt”的文件。

  3. 上述清理活动应该只在文件管理器进程运行之前起作用,一旦停止,创建一个名为 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 非常陌生,并且对自己是否真的有信心这是最好的方法,所以任何进一步的编辑/改进建议将不胜感激)

相关内容