GNU/Linux >> Znalost Linux >  >> Linux

Může Grep vrátit pravdu/nepravdu nebo existují alternativní metody?

Jako součást tohoto skriptu musím být schopen zkontrolovat, zda první uvedený argument odpovídá prvnímu slovu souboru. Pokud ano, ukončete s chybovou zprávou; pokud ne, připojte argumenty k souboru. Rozumím, jak napsat if příkaz, ale ne jak používat grep v rámci skriptu. Rozumím tomu grep bude vypadat nějak takto

grep ^$1 schemas.txt

Mám pocit, že by to mělo být mnohem jednodušší, než to dělám.

Zobrazuje se mi chyba „příliš mnoho argumentů“ v if prohlášení. Zbavil jsem se mezery mezi grep -q a poté došlo k očekávané chybě binárního operátoru.

if [ grep -q ^$1 schemas.txt ]
then
        echo "Schema already exists. Please try again"
        exit 1
else
        echo "[email protected]" >> schemas.txt
fi

Přijatá odpověď:

grep vrátí jiný výstupní kód, pokud něco našel (nulu) vs. pokud nic nenašel (nenulové). V if nulový výstupní kód je mapován na hodnotu „true“ a nenulový výstupní kód je mapován na hodnotu false. Kromě toho má grep -q argument, aby se nevypsal odpovídající text (ale vrátil pouze kód stavu ukončení)

Takže můžete použít grep takto:

if grep -q PATTERN file.txt; then
    echo found
else
    echo not found
fi

Rychlá poznámka, když uděláte něco jako if [ -z "$var" ]… , ukázalo se, že [ je vlastně příkaz, který spouštíte, stejně jako grep. V mém systému je to /usr/bin/[ . (No, technicky vzato, váš shell to pravděpodobně má zabudované, ale to je optimalizace. Chová se, jako by to byl příkaz). Funguje to stejným způsobem, [ vrátí nulový výstupní kód pro true, nenulový výstupní kód pro nepravdu. (test je to samé jako [ , kromě koncovky ] )


Linux
  1. Linux – Jak zjistit, zda jsou ve složce soubory, a podle toho ukončit (v Ksh)?

  2. Existují v Linuxu nějaké standardní kódy ukončení?

  3. Existuje alternativní funkce spánku v C až milisekundy?

  1. Jak mohu vyloučit adresáře z grep -R?

  2. Může exit() selhat při ukončení procesu?

  3. Proč opustit kód 141 pomocí grep -q?

  1. návratová hodnota z python skriptu do shell skriptu

  2. Návratový kód grep pro Linux

  3. Může GNU Grep vytisknout vybranou skupinu?