Co se děje, je toto:
var2=$("$var1" | (grep -Eio '\b[A-Z0-9._%+-]example@unixlinux.online[A-Z0-9.-]+\.[A-Z]{2,4}\b'))
^^^^^^^ Execute the program named (what is in variable var1).
Musíte udělat něco takového:
var2=$(echo "$var1" | grep -Eio '\b[A-Z0-9._%+-]example@unixlinux.online[A-Z0-9.-]+\.[A-Z]{2,4}\b')
nebo dokonce
var2=$(awk 'NR==2' $file | grep -Eio '\b[A-Z0-9._%+-]example@unixlinux.online[A-Z0-9.-]+\.[A-Z]{2,4}\b')
Myslím si, že je to příliš komplikovaný způsob, jak postupovat, ale pokud chcete, aby váš skript fungoval, zkuste toto:
#!/bin/bash
file="email.txt"
var1=$(awk 'NR==2' $file)
var2=$(echo "$var1" | grep -Eio '\b[A-Z0-9._%+-]example@unixlinux.online[A-Z0-9.-]+\.[A-Z]{2,4}\b')
echo $var2
Nejsem si jistý, co file=$(myscript) měl dělat, ale na dalším řádku chcete jako argument název souboru awk , takže byste měli přiřadit pouze email.txt jako hodnotu řetězce na file , neprovádět příkaz s názvem myscript . $var1 není příkaz (je to jen řádek z vašeho textového souboru), takže musíte echo to dá grep cokoliv užitečného pro práci. Další závorky kolem grep jsou nadbytečné.