
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 result
cortesí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.