Quiero escribir wait
hasta que exista un archivo en bash. ¿Cómo hago esto?
Intenté esto pero no funciona:
while [ ! -f outputs\/$trace\_hist_len_$hist_len\_page_size_$page_size\.out]; do
echo "waiting for outputs\/$trace\_hist_len_$hist_len\_page_size_$page_size\.out";
done
Parece tener un error de sintaxis.
bash
shell-script
SurenNihalani
fuente
fuente
Ctrl-K
menos para que no tengas que escapar de nada.$trace
,$hist_len
y$page_size
? ¿Cuál es el error que estás recibiendo? ¿Por qué necesitas escapar del/
?wait
probablemente no sea el comando que estás buscando.wait
pausará una secuencia de comandos hasta que todos los procesos secundarios finalicen, en cuyo punto continuará.Respuestas:
Sin usar algo como
inotify
esto, se trata del límite de lo que vas a poder hacer.El
while
bucle anterior solo se usa:
como condicional, lo que prácticamente significa "hacerlo hasta que lo matemos".La línea importante es la
[[
prueba. La prueba condicional aquí no usa laif
declaración. Esto se debe a que[[
es un comando real y NO parte de laif
declaración. Esto se ejecuta[[ -f "/path/to/file" ]]
y&&
comprueba el estado de salida del[[
comando y ejecuta la siguiente instrucción si ese estado de salida es0
(correcto). La siguiente declaración aquí es labreak
que cerrará el ciclo actual en el que se encuentra su script.Nota:
bash
es muy recomendable que lo uses en[[
lugar de[
. Tiene todas las capacidades,[
pero es mucho más potente y fácil de usar.fuente
[[
y simplemente citar su nombre de archivo, es probable que sea interpretado de manera más apropiada por la[[
cual es una de las razones por las que se recomienda[
.El espacio entre el argumento del archivo y el corchete de cierre es importante.
fuente