sh - bash - dash

Imagen de mikiplus
0 puntos

Hola amigos! Tengo el siguiente script:

#!/bin/sh

# check 
if [[ -z "${4}" ]]; then
	echo "Usage: ${0} number_of_runs number_of_seeds_per_run name_of_the_program_to_run output_path [initial_seed]"
	echo "Ex. ${0} 10 1 sim_run dout     runs sim_run program 10 times using 1 seed per run and leave the results in the 'dout' directory"
	exit 
fi

ls ${4} &> /dev/null
if [ $? -ne 0 ]; then
	echo "The path \"${4}\" does not exist"
	exit 2
fi

if [[ -z "${5}" ]]; then
	initialSeed=1
else
	initialSeed=${5}
fi

declare -a seeds
let numSeeds=$[${1} * ${2}]

seedtool g ${initialSeed} 10000000 ${numSeeds} > seeds.txt
seeds=(`cat seeds.txt`)

mv parameters.ini parameters.ini.default
for i in `seq 0 $[${1} - 1]`; do
	(
		echo "[General]"
		echo "output-vector-file = omnetpp_${i}.vec"
		echo "seed-0-lcg32 = ${seeds[$[${i}*${2}+ 0]]}"
		# Seguir con la secuencia en funcion del generador...
	) > parameters.ini
	./$3

	# Guardar ficheros de configuracion y resultados 
	mv parameters.ini ${4}/parameters_${i}.ini

	# Guardar el fichero de resultados (redundante)
	mv omnetpp_${i}.vec ${4}/omnetpp_${i}.vec

done

mv seeds.txt ${4}/seeds.txt
mv parameters.ini.default parameters.ini

Y cuando lo ejecuto me salen los siguientes errores en consola:

mrun_lcg.sh: 8: [[: not found
mrun_lcg.sh: 20: [[: not found
mrun_lcg.sh: 22: declare: not found
mrun_lcg.sh: 23: let: not found
mrun_lcg.sh: 26: Syntax error: "(" unexpected

Estoy utilizando la 8.10. He estado buscao info. sobre ello y en un principio pensé que seria por culpa del sh que apunta al dash:

lrwxrwxrwx 1 root root 9 2008-12-13 17:31 /bin/sh -> /bin/dash

He intentado ejecutar el script de unas cuantas formas, cambiando esto:

#!/bin/sh
#!/bin/bash
#!/bin/dash

Pero aun así me salen los mismos errores.

¿qué debo hacer para que se me pueda ejecutar el script? Gracias

Imagen de slap
+1
0
-1

Probablemente tu error se debe a que estás usando sh para ejecutar el script.

sh script

Te dará los errores que comentas.
Puedes cambiar la línea:

#!/bin/sh

por

#!/bin/bash

y darle permisos de ejecución con:

chmod u+x script

Lo ejecutas con:

./script

o, independientemente de la primera línea del script, ejecutarlo con:

bash script

Saludos.


0000 start out (+FD),A
           ld  BC, +7FFF
           jp 03CB, RAM-CHECK

http://7grados.injiniero.es

+1
0
-1

Saludos.

0000 start out (+FD),A
           ld  BC, +7FFF
           jp 03CB, RAM-CHECK

http://www.injiniero.es