Ошибка в проверке строки является нулевой в сценарии оболочки?

I am new to Shell Scripts and not aware of the syntax.

У меня есть сценарий оболочки, который я загружаю на свое устройство Android, а затем преобразую его с помощью "busybox dos2unix":

adb shell busybox dos2unix /data/local/myShellScript.sh

В сценарии я пытаюсь проверить строку, является ли она пустой или нет? Но я получаю ошибку: "неожиданный оператор / операнд".

Ниже мой код:

echo "Getting a PID (Process ID) from a file" ;
pid=`cat  /sdcard/PIDofTask.txt` ;
echo "PID of task is : " $pid ;
echo "Checking if the pid exists, to verify the process is running" ;    
pidString=$(ps | grep ${pid}) ;
echo "PID string : " $pidString ;

if [ $pidString ] ;
then
    echo "pid String is not empty" ;
else 
    echo "pid String is empty" ;
fi ;

Выход:

Getting a PID (Process ID) from a file
PID of task is : 11571
Checking if the pid exists, to verify the process is running
PID string : root 11571 8082 4180 1828 poll_sched 7faa42dcdc S sh
/data/local/myShellScript.sh[2]: [: 11571: unexpected operator/operand
pid String is empty

Я также попробовал опции [ -n $pidString ], а также [ -z $pidString ]. Но оба дают ошибки.

Где я делаю ошибку? Очень ценю помощь...

2 ответа

Проверить пустую строку.

Пример:

line="hello welcome"
if [ -z "$line" ] ; then
echo "String null"
fi

Чтобы проверить пустую строку, вам нужно использовать -z.

Пример:

if [ -z "$str" ] ;
Другие вопросы по тегам