
Creo test.sh para leer un archivo con contenido
item1:return1
item2:return2
...
item10:return10
contenido test.sh
VAR1=$1
VAR2= `grep "^${VAR1}:" /home/path/file | awk '{print $2;}'`
echo "${VAR2}";
ejecutar prueba
sh test.sh item1
devolver
: not found test.sh:
: not found test.sh:
Cuando ejecuto lo mismo en Centos. devolver
return1
¿Qué hay de malo con el comando awk?
Respuesta1
No hay nada de malo con el comando awk. Su problema test.sh
no se puede encontrar como se muestra en el mensaje. CentOS probablemente establece su ruta a la variable PATH.
Ejecútelo como sh ./test.sh item1
(supongo que test.sh está en su directorio actual)
Editar: debería haber prestado más atención al script, :
el problema está en grep. Esto funciona.
VAR1=$1
VAR2=`grep "${VAR1}\:" file | awk '{print $2}'`
echo "${VAR2}";
Sin embargo, awk por defecto no lo reconoce :
como separador, tuve que usar
item1: return1
item2: return2
No tengo idea de cómo podría funcionar en el servidor o en centos sin este cambio.