简体   繁体   中英

how to check if a file exist using adb shell

I have a bash script which goes as follows

if [ -f "/sdcard/testfile"]
then 
echo "exists" > /sdcard/outfile
else
echo "does not exist" > /sdcard/outfile
fi

I have sufficient permission to run this with /system/bin/sh . I am calling this script from my application and running this with /system/bin/sh . But after running I am getting false, even if the file '/sdcard/testfile' is there. When I am explicitly running in adb shell, I am getting this error

[: not found

Is there any other way to accomplish this task? I cannot just use java.io.File because of permission issue of application; therefore, I am adhering to shell script (command).

I need the output in the application itself. I mean,

if(filesAreAvailable)
    executeSomething();
else
    executeSomethingElse();

Basically I am programmatically writing this script in the /data/data/myPackageName/files directory and for calling the command:

if [ -f "/sdcard/testfile"]

as

fileWriterScript.write("if [ -f \"/sdcard/testfile\" ]\n")

When using test , you need a space after the opening bracket and before the closing bracket.

From man test :

SYNOPSIS
    test expression
    [ expression ]

So change:

[ -f "/sdcard/testfile"]

to:

[ -f "/sdcard/testfile" ]

If you need to use this in bash script then you can do it that way:

if [[ `adb shell ls /sdcard/path/to/your.file 2> /dev/null` ]]; then
    echo "File exists";
else
    echo "File doesn't exist";
fi

you could do a ls and then check the output - when it contains "No such file or directory" - the file is not there. But still IMHO you need the permission

I made it work using another answer posted in stackoverflow. Reference https://stackoverflow.com/a/6364244/2031060

I used this script. It's checking if a file exist on the phone.

#!/bin/bash

RESULT=$(adb shell "[ -f $1 ] || echo 1")

if [ -z "$RESULT" ]; then
    echo "File exists!"
else
    echo "File not found!"
fi

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM