【问题标题】:adb shell one-liner not passing output properly [duplicate]adb shell one-liner 没有正确传递输出[重复]
【发布时间】:2016-05-07 07:02:22
【问题描述】:

我正在尝试编写一个脚本来提取我今天拍摄的任何照片或视频。下面是代码的样子:

for i in $(adb shell ls -l /sdcard/DCIM/Camera/ | grep $(date +%Y-%m-%d) | awk '{ print $7 }' ) ; do adb pull /sdcard/DCIM/Camera/$i ~/Photos ; done

这是我运行它时遇到的错误:

' does not existsdcard/DCIM/Camera/IMG_20160507_012827.jpg

它正确地获取了需要拉取的文件的名称,但由于某种原因,它没有正确地将该信息传递给“adb pull”。

我是否需要做其他事情来将一个命令的输出“清理”为另一个命令的输入?

【问题讨论】:

  • 嗨,关键字“sanitize”把我带到了这里。关于标题“adb shell one-liner not pass output proper”,这似乎是一个有效的问题,但似乎并不是真正的重复,就像它的关闭声明原因一样。复制步骤:将 adb 的输出填充到 bash 变量 (OUT=$(adb gimme sth); echo $OUT) 中,然后看到它部分崩溃。这就是重点,@monk 的回答似乎也忽略了这一点。
  • ...虽然无法提供正确的答案,但我将在此处转储: • 一些adb 命令(或至少adb shell)以0x0d 和0x0a 结束它们的输出行,并且这就是让我们感到困惑的地方。 • 当您将字符串移交给tr 时,环境卫生已经完成:adb shell ls | tr -d '\r' • 您可以检查将其传递给八进制转储的输出 (od):adb shell ls | od -c,它会告诉您有关包含的特殊字符的更多信息 • 这个解决方案很大程度上受益于这个答案:stackoverflow.com/a/802439/211514

标签: android shell adb


【解决方案1】:

您为什么不尝试查找列出过去 24 小时内修改的所有文件并将它们复制到所需目录?

find ~/desired/source -mtime -1 -type f -print0 | xargs -0 cp -t ~/destination/picture

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-05-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-15
    • 2013-02-03
    相关资源
    最近更新 更多