GNU/Linux >> Linux Esercitazione >  >> Linux

passando grep in una variabile in bash

Quello che sta succedendo è questo:

var2=$("$var1" | (grep -Eio '\b[A-Z0-9._%+-][email protected][A-Z0-9.-]+\.[A-Z]{2,4}\b'))
       ^^^^^^^ Execute the program named (what is in variable var1).

Devi fare qualcosa del genere:

var2=$(echo "$var1" | grep -Eio '\b[A-Z0-9._%+-][email protected][A-Z0-9.-]+\.[A-Z]{2,4}\b')

o anche

var2=$(awk 'NR==2' $file | grep -Eio '\b[A-Z0-9._%+-][email protected][A-Z0-9.-]+\.[A-Z]{2,4}\b')

Penso che questo sia un modo eccessivamente complicato di affrontare le cose, ma se vuoi solo far funzionare il tuo script, prova questo:

#!/bin/bash

file="email.txt"

var1=$(awk 'NR==2' $file)

var2=$(echo "$var1" | grep -Eio '\b[A-Z0-9._%+-][email protected][A-Z0-9.-]+\.[A-Z]{2,4}\b')

echo $var2

Non sono sicuro di cosa sia file=$(myscript) avrebbe dovuto fare, ma nella riga successiva vuoi un nome di file come argomento per awk , quindi dovresti semplicemente assegnare email.txt come valore stringa a file , non eseguire un comando chiamato myscript . $var1 non è un comando (è solo una riga del tuo file di testo), quindi devi echo per dare grep qualsiasi cosa utile con cui lavorare. Le parentesi aggiuntive attorno a grep sono ridondanti.


Linux
  1. Vorrei memorizzare tutti gli argomenti della riga di comando in uno script Bash in una singola variabile

  2. Alias ​​con variabile in bash

  3. Cattura automaticamente l'output dell'ultimo comando in una variabile usando Bash?

  4. Bash cattura l'output di awk nell'array

  5. bash:inserisci i file di elenco in una variabile e ma la dimensione dell'array è 1

Dichiarazione Bash:sintassi ed esempi

Variabile di esportazione Bash

Bash printf - Come stampare una variabile in Bash

Bash Scripting:variabili spiegate con esempi

Come impostare la variabile d'ambiente in Bash

Come eliminare la variabile di sola lettura in bash?