programas - scripts bash ejemplos
Lectura de cadenas delimitadas nulas a través de un bucle Bash (2)
En bash puedes usar una cadena aquí
while IFS= read -r -d '''' line ; do
# Code here
done <<<"$var"
Tenga en cuenta que debe alinear el IFS=
y simplemente use -d ''''
pero asegúrese de que haya un espacio entre ''d'' y la primera comilla simple. Además, agregue el indicador -r
para ignorar los escapes.
Además, esto no es parte de su pregunta, pero ¿podría sugerirle una mejor manera de hacer su secuencia de comandos al usar find
? usa la sustitución de procesos.
while IFS= read -r -d '''' file; do
# Arbitrary operations on "$file" here
done < <(find /some/path -type f -print0)
Quiero iterar a través de una lista de archivos sin preocuparme por los caracteres que puedan contener los nombres de archivo, así que utilizo una lista delimitada por caracteres nulos. El código explicará las cosas mejor.
# Set IFS to the null character to hopefully change the for..in
# delimiter from the space character (sadly does not appear to work).
IFS=$''/0''
# Get null delimited list of files
filelist="`find /some/path -type f -print0`"
# Iterate through list of files
for file in $filelist ; do
# Arbitrary operations on $file here
done
El siguiente código funciona cuando se lee de un archivo, pero necesito leer de una variable que contenga texto.
while read -d $''/0'' line ; do
# Code here
done < /path/to/inputfile
Intenté trabajar con los ejemplos de bash anteriores, y finalmente me di por vencido, y usé Python, que funcionó la primera vez. Para mí resultó que el problema era más simple fuera del caparazón. Sé que esto posiblemente no esté relacionado con una solución de bash, pero de todos modos lo publicaré en caso de que otros quieran una alternativa.
import sh
import path
files = path.Path(".").files()
for x in files:
sh.cp("--reflink=always", x, "UUU00::%s"%(x.basename(),))
sh.cp("--reflink=always", x, "UUU01::%s"%(x.basename(),))