Encuentre palabras que comiencen con la letra ingresada por el usuario en el archivo especificado - bash

Encuentre palabras que comiencen con la letra ingresada por el usuario en el archivo especificado - bash

Quiero crear un script bash, que encontrará todas las palabras que comiencen con la letra ingresada por el usuario en el archivo especificado (especificado en el script o también creará una entrada del usuario). Soy un poco más que principiante total en Linux, mi código es:

    #! /bin/bash

echo 'Please enter starting letter of Name'
read name
result=$(awk '/$name/ {print}' /home/beka/scripts/names.txt)
echo "$(result)"

este resultado produce un error como:

    Please enter starting letter of Name
G
/home/beka/scripts/test.sh: line 6: result: command not found

¿que estoy haciendo mal? Intenté buscar ejemplos de awk pero no puedo encontrar la solución exacta. Gracias de antemano.


CÓDIGO EDITADO

#! /bin/bash

echo 'Please enter starting letter of Name'
read name

if [[ $name == [A-Z] ]]
then 
awk "/$name/{print}" /home/beka/scripts/names.txt
else
echo '0'
fi

EDITAR nombres.txt es una lista de nombres

Michael
Christopher
Jessica
Matthew
Ashley
Jennifer
Joshua

OTRA EDICIÓN

#! /bin/bash

echo 'Please enter starting letter (Uppercase) of name'
read name

if [[ $name == [A-Z] ]]
then 
echo "---Names starting with $name---"
awk "/$name/{print}" /home/beka/scripts/names.txt
elif [[ $name == [a-z] ]]
then
awk "/$name/{print}" /home/beka/scripts/names.txt
else
echo '---------'
echo 'Names not found'
fi

Respuesta1

echo "$(result)"está intentando ejecutar un comando llamado resultcortesía de la $(result)pieza, de ahí el mensaje de error result: command not found.

Pruebe esto (no probado):

#!/usr/bin/env bash

result=''
while [[ -z "$result" ]]; do
    echo 'Please enter starting letter of Name'
    read name

    if [[ $name == [A-Z] ]]
    then 
        result=$(awk -v name="$name" 'index($0,name)==1' /home/beka/scripts/names.txt)
    else
        echo '0'
    fi
done
echo "$result"

Para que la búsqueda no distinga entre mayúsculas y minúsculas:

awk -v name="$name" 'index(tolower($0),tolower(name))==1' /home/beka/scripts/names.txt

Obviamente también tendrás que cambiar $name == [A-Z]a $name == [a-zA-Z]o $name == [[:alpha:]]si quieres poder aceptar una letra minúscula como carácter de búsqueda.

información relacionada