[: =: unaire operator verwacht [duplicate]

Deze vraag heeft hier al antwoorden :

Antwoord

In je tests, als het commando substitutie $(adb -s ...) genereert een string van meerdere woorden, de shell behandelt deze als een syntaxisfout. Je zult de uitbreidingen moeten citeren:

[ "$(adb -s ...)" = *"Is the system running?"* ] 

Het resultaat van een niet-aanhalingsteken commando zal worden gesplitst en bestandsnaam zal globaal worden, net zoals een niet-geciteerde variabele uitbreiding dat doet. Door de uitbreiding te citeren, wordt dit vermeden. In jouw geval is het de splitsing die problemen veroorzaakt.

Met de opdrachtvervanging uitgebreid, kan de test er ongeveer zo uitzien

if [ word1 word2 word3 = *"some string"* ] 

Dit is duidelijk een syntaxisfout.

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *