何が起こっているかは次のとおりです:
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).
次のようにする必要があります:
var2=$(echo "$var1" | grep -Eio '\b[A-Z0-9._%+-]example@unixlinux.online[A-Z0-9.-]+\.[A-Z]{2,4}\b')
または
var2=$(awk 'NR==2' $file | grep -Eio '\b[A-Z0-9._%+-]example@unixlinux.online[A-Z0-9.-]+\.[A-Z]{2,4}\b')
これは非常に複雑な方法だと思いますが、スクリプトを機能させたいだけなら、これを試してください:
#!/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
06 が何かわかりません するはずでしたが、次の行で 19 の引数としてファイル名が必要です 、したがって、 21 を割り当てるだけです 37 の文字列値として 、 47 というコマンドを実行しないでください . 55 はコマンドではありません (テキスト ファイルの単なる 1 行です)。 77 を与える 作業に役立つもの。 82 を囲む追加の括弧