me encontré con el siguiente problema: Estoy escribiendo un script bash de Linux, que hace lo siguiente:BASH: Tira carácter de nueva línea de cuerda (leer línea)
- Leer línea del archivo
- de Gaza el carácter
\n
desde el final de la línea que acaba de leer - ejecutar el comando que hay ahí
Ejemplo: commands.txt
ls
ls -l
ls -ltra
ps as
La ejecución del archivo fiesta debe conseguir la primera línea, y ejecutarlo, pero mientras que el \n
presente, el shell solo salidas "comando no encontrado: ls" Esa parte de la secuencia de comandos se parece a esto
read line
if [ -n "$line" ]; then #if not empty line
#myline=`echo -n $line | tr -d '\n'`
#myline=`echo -e $line | sed ':start /^.*$/N;s/\n//g; t start'`
myline=`echo -n $line | tr -d "\n"`
$myline #execute it
cat $fname | tail -n+2 > $fname.txt
mv $fname.txt $fname
fi
Comentó que tiene las cosas que probé antes de preguntar SO. Alguna solución? Estoy rompiendo mi cerebro durante el último par de horas más de esto ...
ha intentado simplemente '$ line' solo? – knittl
Por supuesto que sí. Pero dice "comando no encontrado: ls " –
Todo lo que se necesita es: 'myline =" $ (echo -n "$ line") "' (con comillas inversas en lugar de '$()' si lo desea) – jnylen