Tengo el siguiente script. Es un caso de prueba simple donde a
hay cualquier valor de cadena y b
se supone que es una ruta.
#!/bin/bash
alias jo "\
echo "please enter values "\
read a \
read -e b \
echo "My values are $a and $b""
Sin embargo, cada vez que intento ejecutar ./sample.sh obtengo los siguientes errores:
./sample.sh: line 3: alias: jo: not found
./sample.sh: line 3: alias: echo please: not found
./sample.sh: line 3: alias: enter: not found
./sample.sh: line 3: alias: values: not found
./sample.sh: line 3: alias: read a read -e b echo My: not found
./sample.sh: line 3: alias: values: not found
./sample.sh: line 3: alias: are: not found
./sample.sh: line 3: alias: and: not found
./sample.sh: line 3: alias: : not found
y cuando lo intento source sample.sh
obtengo lo siguiente:
a: Undefined variable.
Mi objetivo era hacer de esto un alias para poder obtener este script y simplemente ejecutar el alias para ejecutar la línea de comandos. ¿Alguien puede mirar esto y decirme cuál es el error?
command-line
bash
scripts
alias
Jovin Miranda
fuente
fuente
Respuestas:
Tienes un par de problemas aquí.
a diferencia de in
csh
, inbash
(y otros shells tipo Bourne), los alias se asignan con un=
signo, p.alias foo=bar
las comillas no se pueden anidar así; en este caso, puede usar comillas simples alrededor del alias y comillas dobles dentro
la barra diagonal inversa
\
es un carácter de continuación de línea : sintácticamente, convierte su comando en una sola línea (lo contrario de lo que desea)Entonces
Prueba: primero buscamos el archivo:
luego
Si desea utilizar el alias dentro de un script, recuerde que los alias solo están habilitados de forma predeterminada en shells interactivos: para habilitarlos dentro de un script, deberá agregar
Independientemente de todo lo anterior, debe considerar usar una función de shell en lugar de un alias para cosas como esta
fuente
$a
y$b
se ampliarían en tiempo de definición, no cuando se ejecuta el alias.Acostúmbrate a usar funciones en el shell de tipo POSIX. No tiene ninguno de los problemas de cotización:
fuente