Estou escrevendo um If then else para verificar um valor numérico específico em um arquivo

1

Estou escrevendo um script If then else para verificar se existe um determinado valor em um arquivo. Se o valor existir, o valor de impressão existe, caso contrário, o valor de impressão não existe.

#!/bin/bash
#This script will check a file and determine if the QID exists.
#search the zero day file for qids and system tracking id's. These are contained in
#the file file.

echo What is the QID number $HOME?
read QID

#Set some variables
Qualyfile=$(cat /home/dc368/zeroday/zerodayresearch)
QualysID=$QID

If [ $Qualyfile|grep $QualysID = $QualysID ]; then 
    echo qid exists
else echo qid does not exist
fi
    
por ITguru1 24.09.2018 / 18:44

1 resposta

1

Observe que, após if , você coloca um comando . Dependendo do status de saída desse comando, você insere o bloco then ou o bloco else . Observe também que [ é um comando , não apenas a sintaxe (em um prompt bash, digite help [ then help test )

Você quer

#!/bin/bash
read -p "What is the QID? " qid
file=/home/dc368/zeroday/zerodayresearch
if grep -q "$qid" "$file"; then
    echo qid exists
else 
    echo qid does not exist
fi

Como o grep usa expressões regulares, isso pode retornar falsos positivos. Por exemplo, se qid=. , grep retornará "true" se houver pelo menos um caractere no arquivo. Leia man grep para as opções extensivas para ajudar a restringir seus resultados (sugira, considere as opções -w e -F .

Note também que evitei usar nomes de variáveis ALLCAPS. Eles podem causar problemas se você não for cuidadoso. A melhor prática é evitar usá-las.

    
por 24.09.2018 / 19:12