Estoy tratando de escribir un flujo de trabajo que usará Shell para aplicar SHA256 a las celdas en una hoja de cálculo de Excel.
El flujo de trabajo (que puede ser un poco complicado) funciona, pero solo cuando hago clic en él usando "Paso"; si intento ejecutarlo o hacer un bucle, la salida no es el hash SHA256 sino la entrada original.
¿Algunas ideas? Como esto parece realmente extraño.
EDITAR: Gracias a @Graham Miln finalmente conseguí que esto funcionara solo en AppleScript sin Automator.
El comportamiento que describe sugiere un problema de tiempo. Uno o más pasos no se completan antes de que comience el siguiente paso.
Considere combinar todos los pasos en un solo AppleScript. Puede usar el comando do shell script en AppleScript para llamar a shasum
:
-- Get value to hash from clipboard
set myValue to the clipboard
-- Build the command to execute
set hashCommand to "echo -n " & quoted form of (myValue) & " | shasum -a 256"
-- Debug check the command; comment out when it looks good
display dialog hashCommand
-- Execute command and place on clipboard
set myHash to do shell script hashCommand
set the clipboard to myHash
El portapapeles es accesible por AppleScript :
display dialog (the clipboard)
Como un solo AppleScript, puede depurar mediante Aplicaciones > Utilidades > Editor de secuencias de comandos y obtener una visión mucho mejor de lo que sucede a medida que se ejecuta la secuencia de comandos.
display dialog (the clipboard) set myValue to (the clipboard) set myHash to do shell script "echo -n " & quoted form of myValue & " | shasum -a 256 | pbcopy" display dialog (the clipboard)
Pero algo anda mal con la forma en que el valor se pasa al script de Shell porque el valor del portapapeles de salida no es el hash correcto... (aunque es un hash)| pbcopy
tubería no es necesaria. do shell script está devolviendo el resultado de shasum
into myHash
. Use algo como set the clipboard to myHash
después de crear el hash.set myValue to "1" set myHash to do shell script "echo -n \"" & quoted form of (myValue) & "\" | shasum -a 256" set the clipboard to myHash display dialog (the clipboard)
y esto no produce el hash SHA256 de 1. Si lo elimino shasum -a 256
de la línea Shell, el resultado es -n '1'
, lo que sugiere un problema con la forma en que se pasa el valor al script Shell.1
y el hash que espera ver. Esto facilitará la respuesta y puede atraer a otros para que también ayuden.
sin ladera